Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

246 rader
8.9 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.IO;
  5. using System.Net;
  6. namespace basic
  7. {
  8. public class HttpMethods
  9. {
  10. #region POST
  11. /// <summary>
  12. /// HTTP POST方式请求数据
  13. /// </summary>
  14. /// <param name="url">URL.</param>
  15. /// <param name="param">POST的数据</param>
  16. /// <returns></returns>
  17. public static string HttpPost(string url, string param)
  18. {
  19. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
  20. request.Method = "POST";
  21. request.ContentType = "application/x-www-form-urlencoded";
  22. request.Accept = "*/*";
  23. request.Timeout = 15000;
  24. request.AllowAutoRedirect = false;
  25. StreamWriter requestStream = null;
  26. WebResponse response = null;
  27. string responseStr = null;
  28. try
  29. {
  30. requestStream = new StreamWriter(request.GetRequestStream());
  31. requestStream.Write(param);
  32. requestStream.Close();
  33. response = request.GetResponse();
  34. if (response != null)
  35. {
  36. StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
  37. responseStr = reader.ReadToEnd();
  38. reader.Close();
  39. }
  40. }
  41. catch (Exception)
  42. {
  43. throw;
  44. }
  45. finally
  46. {
  47. request = null;
  48. requestStream = null;
  49. response = null;
  50. }
  51. return responseStr;
  52. }
  53. #endregion
  54. #region Get
  55. /// <summary>
  56. /// HTTP GET方式请求数据.
  57. /// </summary>
  58. /// <param name="url">URL.</param>
  59. /// <returns></returns>
  60. public static string HttpGet(string url)
  61. {
  62. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
  63. request.Method = "GET";
  64. //request.ContentType = "application/x-www-form-urlencoded";
  65. request.Accept = "*/*";
  66. request.Timeout = 15000;
  67. request.AllowAutoRedirect = false;
  68. WebResponse response = null;
  69. string responseStr = null;
  70. try
  71. {
  72. response = request.GetResponse();
  73. if (response != null)
  74. {
  75. StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
  76. responseStr = reader.ReadToEnd();
  77. reader.Close();
  78. }
  79. }
  80. catch (Exception)
  81. {
  82. throw;
  83. }
  84. finally
  85. {
  86. request = null;
  87. response = null;
  88. }
  89. return responseStr;
  90. }
  91. #endregion
  92. #region Post With Pic
  93. private string HttpPost(string url, IDictionary<object, object> param, string filePath)
  94. {
  95. string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
  96. byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
  97. HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
  98. wr.ContentType = "multipart/form-data; boundary=" + boundary;
  99. wr.Method = "POST";
  100. wr.KeepAlive = true;
  101. wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
  102. Stream rs = wr.GetRequestStream();
  103. string responseStr = null;
  104. string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
  105. foreach (string key in param.Keys)
  106. {
  107. rs.Write(boundarybytes, 0, boundarybytes.Length);
  108. string formitem = string.Format(formdataTemplate, key, param[key]);
  109. byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
  110. rs.Write(formitembytes, 0, formitembytes.Length);
  111. }
  112. rs.Write(boundarybytes, 0, boundarybytes.Length);
  113. string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
  114. string header = string.Format(headerTemplate, "pic", filePath, "text/plain");
  115. byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
  116. rs.Write(headerbytes, 0, headerbytes.Length);
  117. FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
  118. byte[] buffer = new byte[4096];
  119. int bytesRead = 0;
  120. while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
  121. {
  122. rs.Write(buffer, 0, bytesRead);
  123. }
  124. fileStream.Close();
  125. byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
  126. rs.Write(trailer, 0, trailer.Length);
  127. rs.Close();
  128. WebResponse wresp = null;
  129. try
  130. {
  131. wresp = wr.GetResponse();
  132. Stream stream2 = wresp.GetResponseStream();
  133. StreamReader reader2 = new StreamReader(stream2);
  134. responseStr = reader2.ReadToEnd();
  135. //logger.Debug(string.Format("File uploaded, server response is: {0}", responseStr));
  136. }
  137. catch (Exception ex)
  138. {
  139. //logger.Error("Error uploading file", ex);
  140. if (wresp != null)
  141. {
  142. wresp.Close();
  143. wresp = null;
  144. }
  145. }
  146. finally
  147. {
  148. wr = null;
  149. }
  150. return responseStr;
  151. }
  152. #endregion
  153. #region Post With Pic
  154. /// <summary>
  155. /// HTTP POST方式请求数据(带图片)
  156. /// </summary>
  157. /// <param name="url">URL</param>
  158. /// <param name="param">POST的数据</param>
  159. /// <param name="fileByte">图片</param>
  160. /// <returns></returns>
  161. public static string HttpPost(string url, IDictionary<object, object> param, byte[] fileByte)
  162. {
  163. string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
  164. byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
  165. HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
  166. wr.ContentType = "multipart/form-data; boundary=" + boundary;
  167. wr.Method = "POST";
  168. wr.KeepAlive = true;
  169. wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
  170. Stream rs = wr.GetRequestStream();
  171. string responseStr = null;
  172. string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
  173. foreach (string key in param.Keys)
  174. {
  175. rs.Write(boundarybytes, 0, boundarybytes.Length);
  176. string formitem = string.Format(formdataTemplate, key, param[key]);
  177. byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
  178. rs.Write(formitembytes, 0, formitembytes.Length);
  179. }
  180. rs.Write(boundarybytes, 0, boundarybytes.Length);
  181. string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
  182. string header = string.Format(headerTemplate, "pic", fileByte, "text/plain");//image/jpeg
  183. byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
  184. rs.Write(headerbytes, 0, headerbytes.Length);
  185. rs.Write(fileByte, 0, fileByte.Length);
  186. byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
  187. rs.Write(trailer, 0, trailer.Length);
  188. rs.Close();
  189. WebResponse wresp = null;
  190. try
  191. {
  192. wresp = wr.GetResponse();
  193. Stream stream2 = wresp.GetResponseStream();
  194. StreamReader reader2 = new StreamReader(stream2);
  195. responseStr = reader2.ReadToEnd();
  196. // logger.Error(string.Format("File uploaded, server response is: {0}", responseStr));
  197. }
  198. catch (Exception ex)
  199. {
  200. //logger.Error("Error uploading file", ex);
  201. if (wresp != null)
  202. {
  203. wresp.Close();
  204. wresp = null;
  205. }
  206. }
  207. finally
  208. {
  209. wr = null;
  210. }
  211. return responseStr;
  212. }
  213. #endregion
  214. }
  215. }