HttpOAuth2.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using System;
  2. using System.IO;
  3. using System.Net;
  4. using System.Text;
  5. /// <summary>
  6. ///
  7. /// </summary>
  8. public static class HttpOAuth2
  9. {
  10. /// <summary>
  11. /// 获取token
  12. /// </summary>
  13. /// <param name="url"></param>
  14. /// <param name="paras"></param>
  15. /// <returns></returns>
  16. public static string GetToken(string url, string[] paras)
  17. {
  18. try
  19. {
  20. string EndResult = "";
  21. string SendMessageAddress = url;
  22. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(SendMessageAddress);
  23. request.Method = "POST";
  24. request.AllowAutoRedirect = true;
  25. request.ContentType = "application/x-www-form-urlencoded";
  26. string PostData = string.Format("grant_type={0}&client_id={1}&client_secret={2}", paras[0], paras[1], paras[2]);
  27. byte[] byteArray = Encoding.Default.GetBytes(PostData);
  28. request.ContentLength = byteArray.Length;
  29. using (Stream newStream = request.GetRequestStream())
  30. {
  31. newStream.Write(byteArray, 0, byteArray.Length);//写入参数
  32. newStream.Close();
  33. }
  34. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  35. Stream rspStream = response.GetResponseStream();
  36. using (StreamReader reader = new StreamReader(rspStream, Encoding.UTF8))
  37. {
  38. EndResult = reader.ReadToEnd();
  39. rspStream.Close();
  40. }
  41. response.Close();
  42. return EndResult;
  43. }
  44. catch (Exception ex)
  45. {
  46. return ex.Message;
  47. }
  48. }
  49. /// <summary>
  50. /// POST请求
  51. /// </summary>
  52. /// <param name="url"></param>
  53. /// <param name="data"></param>
  54. /// <param name="token"></param>
  55. /// <returns></returns>
  56. public static string Post(string url, string data, string token)
  57. {
  58. try
  59. {
  60. //将单引号转义成双引号
  61. data = data.Replace("'", "\"");
  62. //创建Web访问对象
  63. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
  64. // 接口慢,设置30分钟超时等待
  65. myRequest.Timeout = 1800000;
  66. //把用户传过来的数据转成“UTF-8”的字节流
  67. byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
  68. myRequest.Method = "POST";
  69. myRequest.ContentLength = buf.Length;
  70. myRequest.ContentType = "application/json;charset=UTF-8";
  71. //myRequest.MaximumAutomaticRedirections = 1;
  72. myRequest.AllowAutoRedirect = true;
  73. //string base64Header = Convert.ToBase64String(Encoding.UTF8.GetBytes(token));
  74. myRequest.Headers.Add("Authorization", "Bearer " + token);
  75. //发送请求
  76. Stream stream = myRequest.GetRequestStream();
  77. stream.Write(buf, 0, buf.Length);
  78. stream.Close();
  79. //获取接口返回值
  80. //通过Web访问对象获取响应内容
  81. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  82. //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
  83. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  84. //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
  85. string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
  86. reader.Close();
  87. myResponse.Close();
  88. return returnXml;
  89. }
  90. catch (Exception ex)
  91. {
  92. return ex.Message;
  93. }
  94. }
  95. }