HttpWebRequest和HttpWebResponse


HttpWebRequest

  HttpWebRequest 類對 WebRequest 中定義的屬性和方法提供支持,也對使用戶能夠直接與使用 HTTP 的服務器交互的附加屬性和方法提供支持
  不要使用 HttpWebRequest 構造函數。使用 WebRequest.Create 方法初始化新的 HttpWebRequest 對象

HttpWebResponse

  決不要直接創建 HttpWebResponse 類的實例。而應當使用通過調用 HttpWebRequest.GetResponse 所返回的實例。您必須調用 Stream.Close 方法或 HttpWebResponse.Close 方法來關閉響應並將連接釋放出來供重用。不必同時調用 Stream.Close 和 HttpWebResponse.Close,但這樣做不會導致錯誤

示例代碼

        public string HttpRequest(string url, string xml)
        {
            string msg = string.Empty;
            byte[] bytes = Encoding.UTF8.GetBytes(xml);

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.PreAuthenticate = true;
            request.AllowWriteStreamBuffering = true;
            request.SendChunked = true;
            request.ProtocolVersion = HttpVersion.Version11;
            request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
            request.Method = "POST";
            request.ContentLength = bytes.Length;
            request.ContentType = "text/xml";
            request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes("username:password")));

            //身份憑證
            CredentialCache myCredential = new CredentialCache();
            myCredential.Add(new Uri(url), "Basic", new NetworkCredential("username", "password"));
            request.Credentials = myCredential;

            //發送數據
            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(bytes, 0, bytes.Length);
            }

            //返回響應
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            if (response.StatusCode != HttpStatusCode.OK)
            {
                msg = String.Format("POST failed {0}", response.StatusCode);
            }
            else
            {
                Stream responseStream = response.GetResponseStream();
                StreamReader sr = new StreamReader(responseStream,Encoding.GetEncoding("gbk"));
                msg = sr.ReadToEnd();

                sr.Close();
                response.Close();
            } 

            return msg;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM