本文翻譯於: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 }