var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Credentials = CredentialCache.DefaultCredentials;
byte[] payload = Encoding.UTF8.GetBytes(postData);
request.ContentLength = payload.Length;
using (var reqStream = request.GetRequestStream())
reqStream.Write(payload, 0, payload.Length);
using (var response = (HttpWebResponse)request.GetResponse())
using (var respStream = response.GetResponseStream())
using (var reader = new StreamReader(respStream, Encoding.UTF8)) {
string result = reader.ReadToEnd();
// 處理結果
}
| 屬性 | 用途 | 範例 |
|---|---|---|
| Method | HTTP 動詞 | "POST", "GET", "PUT", "DELETE" |
| ContentType | 請求內容格式 | "application/json", "text/xml", "multipart/form-data" |
| Headers | 自訂標頭 | request.Headers["Authorization"] = "Bearer token" |
| Timeout | 逾時毫秒 | 30000 (預設 100秒) |
| UserAgent | 用戶代理字串 | "MyApp/1.0" |
| KeepAlive | 連線重用 | true (預設) |
| AllowAutoRedirect | 自動追蹤 3xx | true (預設) |
| CookieContainer | Cookie 管理 | new CookieContainer() |
var req = (HttpWebRequest)WebRequest.Create(soapEndpoint);
req.Method = "POST";
req.ContentType = "text/xml; charset=utf-8";
req.Headers.Add("SOAPAction", "https://tempuri.org/MyMethod");
var soapXml = @"... ";
byte[] body = Encoding.UTF8.GetBytes(soapXml);
req.ContentLength = body.Length;
using (var stm = req.GetRequestStream()) stm.Write(body, 0, body.Length);
using (var resp = (HttpWebResponse)req.GetResponse())
using (var stm = resp.GetResponseStream())
using (var reader = new StreamReader(stm, Encoding.UTF8)) {
var soapResponse = reader.ReadToEnd();
// 解析 XML 回應
}
using (var resp = (HttpWebResponse)request.GetResponse())
using (var respStream = resp.GetResponseStream())
using (var fileStream = File.Create(localPath)) {
var buffer = new byte[8192];
int read;
while ((read = respStream.Read(buffer, 0, buffer.Length)) > 0)
fileStream.Write(buffer, 0, read);
}
WebException,檢查 Response 屬性取得 HTTP 狀態碼HttpWebResponse.StatusCode == HttpStatusCode.OK 才處理內容using 確保 GetResponseStream() 被正確關閉,避免連線洩漏.NET Core / .NET 5+ 建議使用 HttpClient(單例模式、非同步優先、自動解壓縮、支援 HttpRequestMessage 完整控制)。HttpWebRequest 仍適用於 .NET Framework 老專案維護。
舊版 ASP 使用 Server.CreateObject("MSXML2.XMLHTTP") 同步發送,現已淘汰,僅供維舊參考。