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; }