要求資料
開發在今日網際網路的分散式作業環境上執行的應用程式需要有效率而易於使用的方法,以便從所有類型資源擷取資料。可外掛式通訊協定讓您開發採用單一介面的應用程式,從多個 Internet 通訊協定擷取資料。
對於簡單要求和回應的異動,WebClient 類別提供最簡易的方法,可對 Internet 伺服器上載資料或下載資料。WebClient 提供一些方法,可上載和下載檔案、傳送和接收資料流,以及傳送資料緩衝區至伺服器和接收回應。WebClient 使用 WebRequest 和 WebResponse 類別,對網際網路資源產生實際連接,如此任何已註冊的可外掛式通訊協定都可供使用。下列範例要求 Web 網頁並在資料流中傳回結果。
WebClient myClient = new WebClient();
Stream response = myClient.OpenRead("https://www.contoso.com/index.htm");
// The stream data is used here.
response.Close();
[Visual Basic]
Dim myClient As WebClient = New WebClient()
Dim response As Stream = myClient.OpenRead("https://www.contoso.com/index.htm")
' The stream data is used here.
response.Close()
需要產生較複雜異動的用戶端應用程式會使用 WebRequest 類別和它的子代 (Descendant) 向伺服器要求資料。WebRequest 封裝連接至伺服器的詳細資訊、傳送要求,並接收回應。WebRequest 為抽象類別 (Abstract Class),定義一組屬性和方法,可供所有採用可外掛式通訊協定的應用程式使用。WebRequest 的子代 (例如 HttpWebRequest) 以一種與基礎通訊協定一致的方式,實作 WebRequest 所定義的屬性和方法。
WebRequest 類別使用傳遞至其 Create 方法的 URI 值來決定所要建立的特定衍生類別執行個體 (Instance),以建立通訊協定特定的 WebRequest 子代的執行個體。應用程式以 WebRequest.RegisterPrefix 方法註冊子代的建構函式 (Constructor),指示應該使用哪一個 WebRequest 子代來處理要求。
對 Internet 資源的要求是經由呼叫 WebRequest 上的 GetResponse 方法所產生的。GetResponse 方法從 WebRequest 的屬性中建構通訊協定特定的要求、對伺服器產生 TCP 或 UDP 通訊端連接,並且送出要求。對於傳送資料至伺服器的要求,例如 HTTP Post 或 FTP Put 要求,WebRequest.GetRequestStream 方法提供網路資料流以便送入資料。
GetResponse 方法會傳回符合 WebRequest 並與通訊協定相關的 WebResponse,如下列範例所示。
WebRequest req = WebRequest.Create("https://www.contoso.com/");
WebResponse resp = req.GetResponse();
[Visual Basic]
Dim req As WebRequest = WebRequest.Create("https://www.contoso.com")
Dim resp As WebResponse = req.GetResponse()
WebResponse 類別也是抽象類別,定義可供所有採取可外掛式通訊協定的應用程式使用的屬性和方法。WebResponse 子代實作基礎通訊協定的這些屬性和方法。舉例來說,HttpWebResponse 類別實作 HTTP 的 WebResponse 類別。
伺服器傳回的資料是以 WebResponse.GetResponseStream 方法所傳回的資料流呈現給應用程式。您可以像使用任何其他資料流一樣使用這個資料流,如下列範例所示。
StreamReader sr =
new StreamReader(resp.GetResponseStream(), Encoding.ASCII);
[Visual Basic]
Dim sr As StreamReader
sr = New StreamReader(resp.GetResponseStream(), Encoding.ASCII)