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