HttpWebRequest 與 HttpWebResponse是.NET Framework 中 System.Net 命名空間下提供的兩個http請求的輔助類。咱們能夠經過這兩個類完成客戶端到服務器端數據的請求處理。HttpWebRequest 對HTTP協議中的 Header, Content, Cookie 都作了屬性和方法的支持,咱們能借助這些屬性和方法模擬發送Http請求來獲取數據json
1.建立方式服務器
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; //其中url爲請求地址 HttpWebResponse response = request.GetResponse() as HttpWebResponse;
2.參數傳遞cookie
//POST傳遞參數 string paramsData ="username=hello&password=123456"; byte[] parmdata = requestEncoding.GetBytes(paramsData); using (Stream stream = request.GetRequestStream()) { stream.Write(parmdata, 0, parmdata.Length); } //Get傳參,直接在url後拼接參數 string paramsData = "username=hello&password=123456"; url = url + "?" + queryParams;
3.返回數據獲取app
using (Stream data = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(data)) { body = reader.ReadToEnd(); } }
完整示例ide
public static string GetPostJsonString(string url,CookieCollection cookies = null) { //設置請求編碼格式 requestEncoding = Encoding.GetEncoding("UTF-8"); HttpWebRequest request = null; //若是是發送HTTPS請求 if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { //忽略證書認證錯誤 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); request = WebRequest.Create(url) as HttpWebRequest; request.ProtocolVersion = HttpVersion.Version10; } else { request = WebRequest.Create(url) as HttpWebRequest; } request.Method = "POST"; request.ContentType = "application/json"; request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"; request.Timeout = timeout.Value; //添加cookie if (cookies != null) { request.CookieContainer = new CookieContainer(); request.CookieContainer.Add(cookies); } //傳遞參數 string paramsData ="username=hello&password=123456"; ; byte[] parmdata = requestEncoding.GetBytes(paramsData); using (Stream stream = request.GetRequestStream()) { stream.Write(parmdata, 0, parmdata.Length); } string body = string.Empty; try { var response = request.GetResponse() as HttpWebResponse; using (var responseStream = response.GetResponseStream()) { using (var reader = new StreamReader(responseStream)) { body = reader.ReadToEnd(); } } } catch (WebException ex) { HttpWebResponse response = (HttpWebResponse)ex.Response; if (response.StatusCode == HttpStatusCode.BadRequest) { using (Stream data = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(data)) { body = reader.ReadToEnd(); } } } } return body; }