天天看點

C#:使用WebRequest類請求資料

本文翻譯于:https://msdn.microsoft.com/en-us/library/456dfw4f(v=vs.110).aspx

下列程式描述的步驟用于從伺服器請求一個資源,例如,一個Web頁面或檔案。必須由URI辨別的資源。

從主機伺服器請求資料:

1、建立一個WebRequest執行個體通過調用建立URI的資源。

  WebRequest request = WebRequest.Create("http://www.contoso.com/");

    note:

  .net 架構提供了特定于協定的類來自WebRequest和WebResponse uri以“http:”開始,“https:“,“ftp:”,“檔案:”。使用其他協定來通路資源,您必須實作特定于協定的類來自WebRequest WebResponse。有關更多資訊,請參見程式設計可插協定。

2、設定在WebRequest任何你需要的屬性值。例如,要啟用身份驗證,設定憑證屬性NetworkCredential類的一個執行個體。

  request.Credentials = CredentialCache.DefaultCredentials;

  在大多數情況下,WebRequest類足以接收資料。然而,如果你需要設定特定于協定的特性,你必須把WebRequest特定于協定的類型。例如,通路HTTP-specific HttpWebRequest的性質,把WebRequest HttpWebRequest參考。以下代碼示例展示了如何設定HTTP-specific UserAgent屬性。

  ((HttpWebRequest)request).UserAgent = ".NET Framework Example Client";

3、向伺服器發送請求,調用GetResponse。傳回的WebResponse對象的實際類型是由請求的URI的方案。

  WebResponse response = request.GetResponse();

  你完成了一個WebResponse對象後,您必須關閉它通過調用方法。或者,如果您得到的響應流響應對象,您可以關閉流通過調用流。關閉方法。如果你不關閉響應或流,您的應用程式可以運作的連接配接到伺服器并成為無法處理其他請求。

4、您可以通路的屬性WebResponse或鑄WebResponse讀特定于協定的特定于協定的執行個體屬性。例如,通路HTTP-specific HttpWebResponse的性質,把WebResponse HttpWebResponse參考。以下代碼示例展示了如何顯示狀态資訊發送響應。

  Console.WriteLine (((HttpWebResponse)response).StatusDescription);

5、得到包含響應由伺服器發送的資料流,使用GetResponseStream WebResponse的方法。

  Stream dataStream = response.GetResponseStream ();

6、閱讀響應的資料之後,您必須使用流關閉響應流。關閉方法或關閉使用WebResponse響應。關閉方法。沒有必要調用關閉方法在響應流和WebResponse,但這樣做并不是有害的。WebResponse。比分接近的流。關閉時關閉響應。

  response.Close();

Demo:
      
1 using System;
 2 using System.IO;
 3 using System.Net;
 4 using System.Text;
 5 
 6 namespace Examples.System.Net
 7 {
 8     public class WebRequestGetExample
 9     {
10         public static void Main ()
11         {
12             // Create a request for the URL. 
13             WebRequest request = WebRequest.Create (
14               "http://www.contoso.com/default.html");
15             // If required by the server, set the credentials.
16             request.Credentials = CredentialCache.DefaultCredentials;
17             // Get the response.
18             WebResponse response = request.GetResponse ();
19             // Display the status.
20             Console.WriteLine (((HttpWebResponse)response).StatusDescription);
21             // Get the stream containing content returned by the server.
22             Stream dataStream = response.GetResponseStream ();
23             // Open the stream using a StreamReader for easy access.
24             StreamReader reader = new StreamReader (dataStream);
25             // Read the content.
26             string responseFromServer = reader.ReadToEnd ();
27             // Display the content.
28             Console.WriteLine (responseFromServer);
29             // Clean up the streams and the response.
30             reader.Close ();
31             response.Close ();
32         }
33     }
34 }