| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- using System;
- using System.IO;
- using System.Net;
- using System.Text;
- /// <summary>
- ///
- /// </summary>
- public static class HttpOAuth2
- {
- /// <summary>
- /// 获取token
- /// </summary>
- /// <param name="url"></param>
- /// <param name="paras"></param>
- /// <returns></returns>
- public static string GetToken(string url, string[] paras)
- {
- try
- {
- string EndResult = "";
- string SendMessageAddress = url;
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(SendMessageAddress);
- request.Method = "POST";
- request.AllowAutoRedirect = true;
- request.ContentType = "application/x-www-form-urlencoded";
-
- string PostData = string.Format("grant_type={0}&client_id={1}&client_secret={2}", paras[0], paras[1], paras[2]);
- byte[] byteArray = Encoding.Default.GetBytes(PostData);
- request.ContentLength = byteArray.Length;
- using (Stream newStream = request.GetRequestStream())
- {
- newStream.Write(byteArray, 0, byteArray.Length);//写入参数
- newStream.Close();
- }
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Stream rspStream = response.GetResponseStream();
- using (StreamReader reader = new StreamReader(rspStream, Encoding.UTF8))
- {
- EndResult = reader.ReadToEnd();
- rspStream.Close();
- }
- response.Close();
- return EndResult;
- }
- catch (Exception ex)
- {
- return ex.Message;
- }
- }
- /// <summary>
- /// POST请求
- /// </summary>
- /// <param name="url"></param>
- /// <param name="data"></param>
- /// <param name="token"></param>
- /// <returns></returns>
- public static string Post(string url, string data, string token)
- {
- try
- {
- //将单引号转义成双引号
- data = data.Replace("'", "\"");
- //创建Web访问对象
- HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
- // 接口慢,设置30分钟超时等待
- myRequest.Timeout = 1800000;
- //把用户传过来的数据转成“UTF-8”的字节流
- byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
- myRequest.Method = "POST";
- myRequest.ContentLength = buf.Length;
- myRequest.ContentType = "application/json;charset=UTF-8";
- //myRequest.MaximumAutomaticRedirections = 1;
- myRequest.AllowAutoRedirect = true;
- //string base64Header = Convert.ToBase64String(Encoding.UTF8.GetBytes(token));
- myRequest.Headers.Add("Authorization", "Bearer " + token);
- //发送请求
- Stream stream = myRequest.GetRequestStream();
- stream.Write(buf, 0, buf.Length);
- stream.Close();
- //获取接口返回值
- //通过Web访问对象获取响应内容
- HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
- //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
- StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
- //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
- string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
- reader.Close();
- myResponse.Close();
- return returnXml;
- }
- catch (Exception ex)
- {
- return ex.Message;
- }
- }
- }
|