HttpClientHelper.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using System.Net;
  4. using System.Net.Http;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace GxPress.Common.Http
  8. {
  9. /// <summary>
  10. /// HttpClient
  11. /// </summary>
  12. public static class HttpClientHelper
  13. {
  14. /// <summary>
  15. /// get
  16. /// </summary>
  17. /// <param name="url"></param>
  18. /// <param name="headers"></param>
  19. /// <returns></returns>
  20. public static async Task<HttpResponseMessage> GetHeadersAsync(string url, Dictionary<string, string> headers)
  21. {
  22. HttpClient httpClient = new HttpClient(); //http对象
  23. //添加header
  24. foreach (var header in headers)
  25. {
  26. httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
  27. }
  28. var response = await httpClient.GetAsync(url);
  29. return response;
  30. }
  31. /// <summary>
  32. /// 根据地址下载
  33. /// </summary>
  34. /// <param name="url"></param>
  35. /// <returns></returns>
  36. public static async Task<byte[]> GetByteArrayAsync(string url)
  37. {
  38. HttpClient httpClient = new HttpClient(); //http对象
  39. var response = await httpClient.GetByteArrayAsync(url);
  40. return response;
  41. }
  42. /// <summary>
  43. /// post
  44. /// </summary>
  45. /// <param name="url"></param>
  46. /// <param name="jsonObj">json</param>
  47. /// <param name="headers"></param>
  48. /// <returns></returns>
  49. public static async Task<HttpResponseMessage> PostAsync(string url, object jsonObj,
  50. Dictionary<string, string> headers = null)
  51. {
  52. HttpClient httpClient = new HttpClient(); //http对象
  53. if (headers != null)
  54. foreach (var header in headers)
  55. {
  56. httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
  57. }
  58. HttpResponseMessage response = await httpClient.PostAsync(url,
  59. new JsonContent(jsonObj));
  60. return response;
  61. }
  62. /// <summary>
  63. /// rest删除
  64. /// </summary>
  65. /// <param name="url"></param>
  66. /// <param name="headers"></param>
  67. /// <returns></returns>
  68. public static async Task<HttpResponseMessage> DeleteAsync(string url, Dictionary<string, string> headers = null)
  69. {
  70. HttpClient httpClient = new HttpClient(); //http对象
  71. if (headers != null)
  72. foreach (var header in headers)
  73. {
  74. httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
  75. }
  76. HttpResponseMessage response = await httpClient.DeleteAsync(url);
  77. return response;
  78. }
  79. /// <summary>
  80. /// 返回JSon数据
  81. /// </summary>
  82. /// <param name="JSONData">要处理的JSON数据</param>
  83. /// <param name="Url">要提交的URL</param>
  84. /// <returns>返回的JSON处理字符串</returns>
  85. public static string GetResponseData(string JSONData, string Url)
  86. {
  87. try
  88. {
  89. byte[] bytes = Encoding.UTF8.GetBytes(JSONData);
  90. var request = (HttpWebRequest)WebRequest.Create(Url);
  91. request.Method = "POST";
  92. request.ContentLength = bytes.Length;
  93. request.ContentType = "text/xml";
  94. Stream reqstream = request.GetRequestStream();
  95. reqstream.Write(bytes, 0, bytes.Length);
  96. //声明一个HttpWebRequest请求
  97. request.Timeout = 90000;
  98. //设置连接超时时间
  99. //request.Headers.Set("Pragma", "no-cache");
  100. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  101. Stream streamReceive = response.GetResponseStream();
  102. Encoding encoding = Encoding.UTF8;
  103. StreamReader streamReader = new StreamReader(streamReceive, encoding);
  104. string strResult = streamReader.ReadToEnd();
  105. streamReceive.Dispose();
  106. streamReader.Dispose();
  107. return strResult;
  108. }
  109. catch (System.Exception)
  110. {
  111. return "";
  112. }
  113. return "";
  114. }
  115. }
  116. }