HttpTool.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Text;
  7. namespace Yuzhyn.WebUtils.HttpUtils
  8. {
  9. public class HttpTool
  10. {
  11. const string DefaultContentType = "application/x-www-form-urlencoded";
  12. const string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)";
  13. public static string Get(string url, out CookieCollection outcookie, CookieCollection cookie = null, string contentType = DefaultContentType, bool autoRedirect = false, bool keepAlive = true, string userAgent = DefaultUserAgent)
  14. {
  15. string html = "";
  16. outcookie = null;
  17. Stream stream = null;
  18. StreamReader reader = null;
  19. try
  20. {
  21. HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
  22. request.Method = "GET";
  23. request.ContentType = DefaultContentType;
  24. request.AllowAutoRedirect = autoRedirect;
  25. request.KeepAlive = keepAlive;
  26. request.UserAgent = DefaultUserAgent;
  27. request.CookieContainer = new CookieContainer();
  28. if (cookie != null) request.CookieContainer.Add(cookie);
  29. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  30. response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
  31. outcookie = response.Cookies;
  32. stream = response.GetResponseStream();
  33. reader = new StreamReader(stream, Encoding.Default);
  34. html = reader.ReadToEnd();
  35. }
  36. catch
  37. {
  38. }
  39. finally
  40. {
  41. if (reader != null) reader.Close();
  42. if (stream != null) stream.Close();
  43. }
  44. return html;
  45. }
  46. public static string Post(string url, out CookieCollection outcookie, Dictionary<string, string> data = null, CookieCollection cookie = null, string contentType = DefaultContentType, bool autoRedirect = true, bool keepAlive = true, string userAgent = DefaultUserAgent)
  47. {
  48. string html = "";
  49. outcookie = null;
  50. Stream stream = null, dataStream = null;
  51. StreamReader reader = null;
  52. try
  53. {
  54. //配置属性
  55. HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
  56. request.Method = "POST";
  57. request.ContentType = DefaultContentType;
  58. request.AllowAutoRedirect = autoRedirect;
  59. request.KeepAlive = keepAlive;
  60. request.UserAgent = DefaultUserAgent;
  61. request.CookieContainer = new CookieContainer();
  62. if (cookie != null) request.CookieContainer.Add(cookie);
  63. //配置参数
  64. if (data != null)
  65. {
  66. StringBuilder dataString = new StringBuilder();
  67. foreach (var item in data)
  68. {
  69. string param = string.Format("&{0}={1}", item.Key, item.Value);
  70. dataString.Append(param);
  71. }
  72. byte[] dataByte = Encoding.UTF8.GetBytes(dataString.ToString().Substring(1));
  73. request.ContentLength = dataByte.Length;
  74. dataStream = request.GetRequestStream();
  75. dataStream.Write(dataByte, 0, dataByte.Length);
  76. }
  77. //请求数据
  78. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  79. response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
  80. outcookie = response.Cookies;
  81. stream = response.GetResponseStream();
  82. reader = new StreamReader(stream, Encoding.Default);
  83. html = reader.ReadToEnd();
  84. }
  85. catch
  86. {
  87. }
  88. finally
  89. {
  90. if (reader != null) reader.Close();
  91. if (stream != null) stream.Close();
  92. if (dataStream != null) dataStream.Close();
  93. }
  94. return html;
  95. }
  96. public static string PostJson(string url, out CookieCollection outcookie, string data = null, CookieCollection cookie = null, string contentType = DefaultContentType, bool autoRedirect = true, bool keepAlive = true, string userAgent = DefaultUserAgent)
  97. {
  98. string html = "";
  99. outcookie = null;
  100. Stream stream = null, dataStream = null;
  101. StreamReader reader = null;
  102. try
  103. {
  104. //配置属性
  105. HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
  106. request.Method = "POST";
  107. request.ContentType = DefaultContentType;
  108. request.AllowAutoRedirect = autoRedirect;
  109. request.KeepAlive = keepAlive;
  110. request.UserAgent = DefaultUserAgent;
  111. request.CookieContainer = new CookieContainer();
  112. if (cookie != null) request.CookieContainer.Add(cookie);
  113. //配置参数
  114. if (data != null)
  115. {
  116. byte[] dataByte = Encoding.UTF8.GetBytes(data);
  117. request.ContentLength = dataByte.Length;
  118. dataStream = request.GetRequestStream();
  119. dataStream.Write(dataByte, 0, dataByte.Length);
  120. }
  121. //请求数据
  122. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  123. response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
  124. outcookie = response.Cookies;
  125. stream = response.GetResponseStream();
  126. reader = new StreamReader(stream, Encoding.Default);
  127. html = reader.ReadToEnd();
  128. }
  129. catch
  130. {
  131. }
  132. finally
  133. {
  134. if (reader != null) reader.Close();
  135. if (stream != null) stream.Close();
  136. if (dataStream != null) dataStream.Close();
  137. }
  138. return html;
  139. }
  140. }
  141. }