记录HttpWebRequest辅助类

川长思鸟来 2021-09-19 19:26 514阅读 0赞

最近因为工作关系,需要通过HttpWebRequest去请求API,所有就写了个简单的辅助public sealed classHttpRequestHelper

复制代码

  1. {
  2. private static string USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36";
  3. private static string ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  4. private static string CONTENT_TYPE = "application/x-www-form-urlencoded; encoding=UTF-8";
  5. /// <summary>
  6. /// 单例
  7. /// </summary>
  8. private static volatile HttpRequestHelper instance;
  9. private static object syncRoot = new object();
  10. private HttpRequestHelper() { }
  11. public static HttpRequestHelper Instance
  12. {
  13. get
  14. {
  15. if (instance == null)
  16. {
  17. lock (syncRoot)
  18. {
  19. if (instance == null)
  20. {
  21. instance = new HttpRequestHelper();
  22. }
  23. }
  24. }
  25. return instance;
  26. }
  27. }
  28. /// <summary>
  29. /// Get请求
  30. /// </summary>
  31. /// <param name="queryString">url参数</param>
  32. /// <returns>json格式结果</returns>
  33. public string Get(string URL)
  34. {
  35. string ret = string.Empty;
  36. URL = URL.Replace("ACCESS_TOKEN", WxTokenHelper.Instance.Token);
  37. var request = CreateRequest("GET", URL);
  38. var response = request.GetResponse();
  39. Stream responseStream = response.GetResponseStream();
  40. StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8);
  41. ret = readStream.ReadToEnd();
  42. readStream.Close();
  43. return ret;
  44. }
  45. public string GetToken(string URL)
  46. {
  47. string ret = string.Empty;
  48. var request = CreateRequest("GET", URL);
  49. var response = request.GetResponse();
  50. Stream responseStream = response.GetResponseStream();
  51. StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8);
  52. ret = readStream.ReadToEnd();
  53. readStream.Close();
  54. return ret;
  55. }
  56. /// <summary>
  57. /// Post请求
  58. /// </summary>
  59. /// <param name="URL">请求的URL</param>
  60. /// <param name="jsonData">json格式参数</param>
  61. /// <returns>json格式结果</returns>
  62. public string Post(string URL, string jsonData)
  63. {
  64. string ret = string.Empty;
  65. URL = URL.Replace("ACCESS_TOKEN", WxTokenHelper.Instance.Token);
  66. var request = CreateRequest("POST", URL);
  67. if (!string.IsNullOrWhiteSpace(jsonData))
  68. {
  69. byte[] data = Encoding.UTF8.GetBytes(jsonData);
  70. request.ContentLength = data.Length;
  71. using (var requestStream = request.GetRequestStream())
  72. {
  73. requestStream.Write(data, 0, data.Length);
  74. };
  75. var response = request.GetResponse() as HttpWebResponse;
  76. using (var responseStream = response.GetResponseStream())
  77. {
  78. using (var readStream = new StreamReader(responseStream, Encoding.UTF8))
  79. {
  80. ret = readStream.ReadToEnd();
  81. }
  82. }
  83. }
  84. return ret;
  85. }
  86. private HttpWebRequest CreateRequest(string method, string URL)
  87. {
  88. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
  89. request.Accept = ACCEPT;
  90. request.UserAgent = USER_AGENT;
  91. request.Method = method;
  92. request.ContentType = CONTENT_TYPE;
  93.      request.Proxy = null;
  94. return request;
  95. }
  96. }

复制代码

如果你对编程感兴趣或者想往编程方向发展,可以关注微信公众号【筑梦编程】,大家一起交流讨论!小编也会每天定时更新既有趣又有用的编程知识!

发表评论

表情:
评论列表 (有 0 条评论,514人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JUC强大的辅助

    JUC中提供了三种常用的辅助类,通过这些辅助类可以很好的解决线程数量过多时Lock锁的频繁操作。这三种辅助类为: • CountDownLatch: 减少计数 • Cy

    相关 辅助工具

    1:项目管理软件,能随时随地看到项目的进展,以及bug的反馈等等信息 > [http://www.zentao.net/][http_www.zentao.net]  禅道