public static void GetPage(String url) { try { // Creates an HttpWebRequest for the specified URL.
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
// 有些網站會阻止程序訪問,需要加入下面這句
myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
myHttpWebRequest.Method = "GET"; // Sends the HttpWebRequest and waits for a response.
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); if (myHttpWebResponse.StatusCode == HttpStatusCode.OK) Console.WriteLine("\r\nResponse Status Code is OK and StatusDescription is: {0}", myHttpWebResponse.StatusDescription); // Releases the resources of the response.
myHttpWebResponse.Close(); } catch(WebException e) { Console.WriteLine("\r\nWebException Raised. The following error occured : {0}",e.Status); } catch(Exception e) { Console.WriteLine("\nThe following Exception was raised : {0}",e.Message); } }
HttpStatusCode 枚舉的值,可以參考:
成員名稱 | 說明 | |
---|---|---|
![]() ![]() |
Accepted | 等效於 HTTP 狀態 202。 Accepted 指示請求已被接受做進一步處理。 |
![]() ![]() |
Ambiguous | 等效於 HTTP 狀態 300。 Ambiguous 指示請求的信息有多種表示形式。 默認操作是將此狀態視為重定向,並遵循與此響應關聯的 Location 標頭的內容。 如果 HttpWebRequest.AllowAutoRedirect 屬性為 false,則 Ambiguous 將導致引發異常。 Ambiguous 是 MultipleChoices 的同義詞。 |
![]() ![]() |
BadGateway | 等效於 HTTP 狀態 502。 BadGateway 指示中間代理服務器從另一代理或原始服務器接收到錯誤響應。 |
![]() ![]() |
BadRequest | 等效於 HTTP 狀態 400。 BadRequest 指示服務器未能識別請求。 如果沒有其他適用的錯誤,或者不知道准確的錯誤或錯誤沒有自己的錯誤代碼,則發送 BadRequest。 |
![]() ![]() |
Conflict | 等效於 HTTP 狀態 409。 Conflict 指示由於服務器上的沖突而未能執行請求。 |
![]() ![]() |
Continue | 等效於 HTTP 狀態 100。 Continue 指示客戶端可能繼續其請求。 |
![]() ![]() |
Created | 等效於 HTTP 狀態 201。 Created 指示請求導致在響應被發送前創建新資源。 |
![]() ![]() |
ExpectationFailed | 等效於 HTTP 狀態 417。 ExpectationFailed 指示服務器未能符合 Expect 頭中給定的預期值。 |
![]() ![]() |
Forbidden | 等效於 HTTP 狀態 403。 Forbidden 指示服務器拒絕滿足請求。 |
![]() ![]() |
Found | 等效於 HTTP 狀態 302。 Found 指示請求的信息位於 Location 頭中指定的 URI 處。 接收到此狀態時的默認操作為遵循與響應關聯的 Location 頭。 原始請求方法為 POST 時,重定向的請求將使用 GET 方法。 如果 HttpWebRequest.AllowAutoRedirect 屬性為 false,則 Found 將導致引發異常。 Found 是 Redirect 的同義詞。 |
![]() ![]() |
GatewayTimeout | 等效於 HTTP 狀態 504。 GatewayTimeout 指示中間代理服務器在等待來自另一個代理或原始服務器的響應時已超時。 |
![]() ![]() |
Gone | 等效於 HTTP 狀態 410。 Gone 指示請求的資源不再可用。 |
![]() ![]() |
HttpVersionNotSupported | 等效於 HTTP 狀態 505。 HttpVersionNotSupported 指示服務器不支持請求的 HTTP 版本。 |
![]() ![]() |
InternalServerError | 等效於 HTTP 狀態 500。 InternalServerError 指示服務器上發生了一般錯誤。 |
![]() ![]() |
LengthRequired | 等效於 HTTP 狀態 411。 LengthRequired 指示缺少必需的 Content-length 頭。 |
![]() ![]() |
MethodNotAllowed | 等效於 HTTP 狀態 405。 MethodNotAllowed 指示請求的資源上不允許請求方法(POST 或 GET)。 |
![]() ![]() |
Moved | 等效於 HTTP 狀態 301。 Moved 指示請求的信息已移到 Location 頭中指定的 URI 處。 接收到此狀態時的默認操作為遵循與響應關聯的 Location 頭。 原始請求方法為 POST 時,重定向的請求將使用 GET 方法。 Moved 是 MovedPermanently 的同義詞。 |
![]() ![]() |
MovedPermanently | 等效於 HTTP 狀態 301。 MovedPermanently 指示請求的信息已移到 Location 頭中指定的 URI 處。 接收到此狀態時的默認操作為遵循與響應關聯的 Location 頭。 MovedPermanently 是 Moved 的同義詞。 |
![]() ![]() |
MultipleChoices | 等效於 HTTP 狀態 300。 MultipleChoices 指示請求的信息有多種表示形式。 默認操作是將此狀態視為重定向,並遵循與此響應關聯的 Location 標頭的內容。 如果 HttpWebRequest.AllowAutoRedirect 屬性為 false,則 MultipleChoices 將導致引發異常。 MultipleChoices 是 Ambiguous 的同義詞。 |
![]() ![]() |
NoContent | 等效於 HTTP 狀態 204。 NoContent 指示已成功處理請求並且響應已被設定為無內容。 |
![]() ![]() |
NonAuthoritativeInformation | 等效於 HTTP 狀態 203。 NonAuthoritativeInformation 指示返回的元信息來自緩存副本而不是原始服務器,因此可能不正確。 |
![]() ![]() |
NotAcceptable | 等效於 HTTP 狀態 406。 NotAcceptable 指示客戶端已用 Accept 頭指示將不接受資源的任何可用表示形式。 |
![]() ![]() |
NotFound | 等效於 HTTP 狀態 404。 NotFound 指示請求的資源不在服務器上。 |
![]() ![]() |
NotImplemented | 等效於 HTTP 狀態 501。 NotImplemented 指示服務器不支持請求的函數。 |
![]() ![]() |
NotModified | 等效於 HTTP 狀態 304。 NotModified 指示客戶端的緩存副本是最新的。 未傳輸此資源的內容。 |
![]() ![]() |
OK | 等效於 HTTP 狀態 200。 OK 指示請求成功,且請求的信息包含在響應中。 這是最常接收的狀態代碼。 |
![]() ![]() |
PartialContent | 等效於 HTTP 狀態 206。 PartialContent 指示響應是包括字節范圍的 GET 請求所請求的部分響應。 |
![]() ![]() |
PaymentRequired | 等效於 HTTP 狀態 402。 保留 PaymentRequired 以供將來使用。 |
![]() ![]() |
PreconditionFailed | 等效於 HTTP 狀態 412。 PreconditionFailed 指示為此請求設置的條件失敗,且無法執行此請求。 條件是用條件請求標頭(如 If-Match、If-None-Match 或 If-Unmodified-Since)設置的。 |
![]() ![]() |
ProxyAuthenticationRequired | 等效於 HTTP 狀態 407。 ProxyAuthenticationRequired 指示請求的代理要求身份驗證。 Proxy-authenticate 頭包含如何執行身份驗證的詳細信息。 |
![]() ![]() |
Redirect | 等效於 HTTP 狀態 302。 Redirect 指示請求的信息位於 Location 頭中指定的 URI 處。 接收到此狀態時的默認操作為遵循與響應關聯的 Location 頭。 原始請求方法為 POST 時,重定向的請求將使用 GET 方法。 如果 HttpWebRequest.AllowAutoRedirect 屬性為 false,則 Redirect 將導致引發異常。 Redirect 是 Found 的同義詞。 |
![]() ![]() |
RedirectKeepVerb | 等效於 HTTP 狀態 307。 RedirectKeepVerb 指示請求信息位於 Location 頭中指定的 URI 處。 接收到此狀態時的默認操作為遵循與響應關聯的 Location 頭。 原始請求方法為 POST 時,重定向的請求還將使用 POST 方法。 如果 HttpWebRequest.AllowAutoRedirect 屬性為 false,則 RedirectKeepVerb 將導致引發異常。 RedirectKeepVerb 是 TemporaryRedirect 的同義詞。 |
![]() ![]() |
RedirectMethod | 等效於 HTTP 狀態 303。 作為 POST 的結果,RedirectMethod 將客戶端自動重定向到 Location 頭中指定的 URI。 用 GET 生成對 Location 標頭所指定的資源的請求。 如果 HttpWebRequest.AllowAutoRedirect 屬性為 false,則 RedirectMethod 將導致引發異常。 RedirectMethod 是 SeeOther 的同義詞。 |
![]() ![]() |
RequestedRangeNotSatisfiable | 等效於 HTTP 狀態 416。 RequestedRangeNotSatisfiable 指示無法返回從資源請求的數據范圍,因為范圍的開頭在資源的開頭之前,或因為范圍的結尾在資源的結尾之后。 |
![]() ![]() |
RequestEntityTooLarge | 等效於 HTTP 狀態 413。 RequestEntityTooLarge 指示請求太大,服務器無法處理。 |
![]() ![]() |
RequestTimeout | 等效於 HTTP 狀態 408。 RequestTimeout 指示客戶端沒有在服務器期望請求的時間內發送請求。 |
![]() ![]() |
RequestUriTooLong | 等效於 HTTP 狀態 414。 RequestUriTooLong 指示 URI 太長。 |
![]() ![]() |
ResetContent | 等效於 HTTP 狀態 205。 ResetContent 指示客戶端應重置(或重新加載)當前資源。 |
![]() ![]() |
SeeOther | 等效於 HTTP 狀態 303。 作為 POST 的結果,SeeOther 將客戶端自動重定向到 Location 頭中指定的 URI。 用 GET 生成對 Location 標頭所指定的資源的請求。 如果 HttpWebRequest.AllowAutoRedirect 屬性為 false,則 SeeOther 將導致引發異常。 SeeOther 是 RedirectMethod 的同義詞。 |
![]() ![]() |
ServiceUnavailable | 等效於 HTTP 狀態 503。 ServiceUnavailable 指示服務器暫時不可用,通常是由於過多加載或維護。 |
![]() ![]() |
SwitchingProtocols | 等效於 HTTP 狀態 101。 SwitchingProtocols 指示正在更改協議版本或協議。 |
![]() ![]() |
TemporaryRedirect | 等效於 HTTP 狀態 307。 TemporaryRedirect 指示請求信息位於 Location 頭中指定的 URI 處。 接收到此狀態時的默認操作為遵循與響應關聯的 Location 頭。 原始請求方法為 POST 時,重定向的請求還將使用 POST 方法。 如果 HttpWebRequest.AllowAutoRedirect 屬性為 false,則 TemporaryRedirect 將導致引發異常。 TemporaryRedirect 是 RedirectKeepVerb 的同義詞。 |
![]() ![]() |
Unauthorized | 等效於 HTTP 狀態 401。 Unauthorized 指示請求的資源要求身份驗證。 WWW-Authenticate 頭包含如何執行身份驗證的詳細信息。 |
![]() ![]() |
UnsupportedMediaType | 等效於 HTTP 狀態 415。 UnsupportedMediaType 指示請求是不支持的類型。 |
![]() ![]() |
Unused | 等效於 HTTP 狀態 306。 Unused 是未完全指定的 HTTP/1.1 規范的建議擴展。 |
![]() |
UpgradeRequired | 等效於 HTTP 狀態 426。 UpgradeRequired 指示客戶端應切換為諸如 TLS/1.0 之類的其他協議。 |
![]() ![]() |
UseProxy | 等效於 HTTP 狀態 305。 UseProxy 指示請求應使用位於 Location 頭中指定的 URI 的代理服務器。 |