HttpWebRequest 与 HttpWebResponse

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;
        }
相关文章
相关标签/搜索