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;
        }
相關文章
相關標籤/搜索