Windows.Web.Http 命名空間
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供適用于 UWP 應用程式的新式 HTTP 用戶端 API。
類別
HttpBufferContent |
提供使用緩衝區的 HTTP 內容。 |
HttpClient |
傳送 HTTP 要求,並從 URI 所識別的資源接收 HTTP 回應。 如需 HttpClient 類別的程式設計指引和程式碼範例,請參閱 HttpClient 概念性主題。 |
HttpCookie |
提供一組屬性和方法來管理 HTTP Cookie。 |
HttpCookieCollection |
提供 HttpCookie 類別實例的集合容器。 |
HttpCookieManager |
新增或刪除 HttpCookie ,或檢視與應用程式相關聯的 Cookie。 |
HttpFormUrlEncodedContent |
提供 HTTP 內容,其使用 以 application/x-www-form-urlencoded MIME 類型編碼的名稱/值資料。 |
HttpGetBufferResult |
結合最終緩衝區結果與下列專案:原始 HTTP 要求、產生的 HTTP 回應 (,如果有任何) 、擴充的錯誤值,以及成功指示。 |
HttpGetInputStreamResult |
結合最終輸入資料流程結果以及下列專案:原始 HTTP 要求、產生的 HTTP 回應 (,如果有任何) 、擴充的錯誤值,以及成功的指示。 |
HttpGetStringResult |
結合最終字串結果與下列專案:原始 HTTP 要求、如果有任何) 、擴充錯誤值和成功指示,則產生的 HTTP 回應 (。 |
HttpMethod |
擷取 GET 和 POST 等標準 HTTP 方法,並建立新的 HTTP 方法。 |
HttpMultipartContent |
提供使用 multipart/* MIME 類型的 HTTP 內容。 |
HttpMultipartFormDataContent |
提供使用 multipart/form-data MIME 類型的 HTTP 內容。 |
HttpRequestMessage |
表示 HTTP 要求訊息,包括標頭。 |
HttpRequestResult |
結合原始 HTTP 要求與下列專案:如果有任何) 、擴充錯誤值和成功指示,則產生的 HTTP 回應 (。 |
HttpResponseMessage |
表示 HTTP 回應訊息,包括標頭、狀態碼和資料。 |
HttpStreamContent |
提供使用資料流程的 HTTP 內容。 |
HttpStringContent |
提供使用字串的 HTTP 內容。 |
HttpTransportInformation |
提供 HTTP 連線所使用的基礎傳輸相關資訊。 |
結構
HttpProgress |
包含 HttpClient 作業進度的狀態資訊。 |
介面
IHttpContent |
提供 HTTP 實體主體和內容標頭的基底介面。 |
列舉
HttpCompletionOption |
指出讀取所有回應時,還是唯讀取標頭時,是否將非同步 HttpClient 作業視為已完成。 |
HttpProgressStage |
指出 HTTP 連線進度中的步驟。 |
HttpResponseMessageSource |
指出 在 HttpResponseMessage中收到的資料來源。 |
HttpStatusCode |
包含 HTTP 要求回應中為 HTTP 定義的狀態碼值。 |
HttpVersion |
表示 HTTP 通訊協定版本。 |
範例
下列範例程式碼示範如何以字串的形式從 HTTP 伺服器取得內容。
using System;
using Windows.Foundation;
using Windows.Web.Http;
// Note: the URI constructor will throw an exception
// if the string passed is not a valid URI
var uri = new Uri("http://example.com/datalist.aspx");
var httpClient = new HttpClient();
// Always catch network exceptions for async methods
try
{
var result = await httpClient.GetStringAsync(uri);
}
catch (Exception ex)
{
// Details in ex.Message and ex.HResult.
}
// Once your app is done using the HttpClient object call dispose to
// free up system resources (the underlying socket and memory used for the object)
httpclient.Dispose();
#include "winrt/Windows.Foundation.h"
#include "winrt/Windows.Web.Http.h"
using namespace winrt;
Windows::Foundation::IAsyncAction HttpClientExample()
{
Windows::Foundation::Uri uri{ L"http://www.bing.com" };
Windows::Web::Http::HttpClient httpClient{};
// Always catch network exceptions for async methods.
try
{
auto response{ co_await httpClient.GetStringAsync(uri) };
}
catch (winrt::hresult_error const& ex)
{
// Details in ex.message() and ex.to_abi().
}
// The destructor of HttpClient frees system resources
// (the underlying socket, and memory used for the object).
}
using namespace Windows::Foundation;
using namespace Windows::Web::Http;
// Note: the URI constructor will throw an exception
// if the string passed is not a valid URI
uri = ref new Uri("http://example.com/datalist.aspx");
httpClient = ref new HttpClient();
// Always catch network exceptions for async methods
try
{
httpClient->GetStringAsync(uri);
}
catch (Exception ^ ex)
{
// Details in ex.Message and ex.HResult.
}
// In C++/CX, the system resources used by httpClient object are released
// when the object falls out of scope or by the destructor (delete operator).
備註
Windows.Web.Http 命名空間和相關的 Windows.Web.Http.Headers 和 Windows.Web.Http.Filters 命名空間為以 HTTP 和 REST 服務為目標的 UWP 應用程式提供程式設計介面。 這個新 HTTP API 的這項功能設計成符合 IETF 在 RFC 2616 中所定義的 HTTP。 新的 HTTP API 在適用于開發人員的 JavaScript、C#、VB.NET 和 C++ 中提供一致的支援。
這個新的 API 會以先前在 Windows 8 中每個語言投影所需的不同功能取代三個不同的 API 用法。
- 適用于 JavaScript 的WinJS.xhr
- C# 和 VB之 System.Net.Http命名空間中的HttpClient。
- 適用于 C++ 的IXMLHTTPRequest2
Windows.Web.Http 和相關命名空間中的類別是以 HTTP 和 REST 開發的所有層級為目標:
- 基本 HTTP 開發人員
- 網站特定的 HTTP 程式庫開發人員
- 進階 HTTP 開發人員
對於基本 HTTP 開發人員,新的 API 具有簡單的介面,可處理最常見的工作,以及應該在大部分環境中運作之驗證的合理預設值。 對於程式庫開發人員而言,一致的物件模型和多種語言支援表示您可以為所有語言的開發人員撰寫程式庫一次。 針對進階 HTTP 開發人員,新的 API 包含一組豐富的功能。
Windows.Web.Http 命名空間和相關命名空間會提供下列元件:
- HttpClient - 透過 HTTP 傳送和接收要求的主要類別。
- HttpRequestMessage - RFC 2616中定義的 HTTP 要求訊息。
- HttpResponseMessage - RFC 2616中定義的 HTTP 回應訊息。
HTTP 訊息的內容會對應至 RFC 2616中定義的實體本文。 Windows.Web.Http 命名空間中的數個類別和介面可用於 HTTP 內容,包括:
- IHttpContent - 開發人員建立自己的內容物件的基底介面。 它代表 HTTP 實體主體和內容標頭。 此介面具有可取得和設定實際內容資料的方法。 它也提供取得和設定內容相關標頭的屬性。
- HttpBufferContent - 使用緩衝區的 HTTP 內容。
- HttpFormUrlEncodedContent - 使用 以 application/x-www-form-urlencoded MIME 類型編碼的名稱/值 Tuple 的 HTTP 內容。
- HttpMultipartContent - 使用 multipart/* MIME 類型的 HTTP 內容。
- HttpMultipartFormDataContent - 使用編碼 多部分/表單資料 MIME 類型的 HTTP 內容。
- HttpStreamContent - 使用資料流程的 HTTP 內容。 HTTP GET 方法會使用此內容類型來接收資料,並使用 HTTP POST 方法來上傳資料。
- HttpStringContent - 使用字串的 HTTP 內容。
Windows.Web.Http.Headers命名空間中的類別代表RFC 2616中定義的 HTTP 標頭。 HTTP 標頭會與 HttpRequestMessage 和 HttpResponseMessage 相關聯,做為擷取或設定的屬性。
Windows.Web.Http 命名空間中的類別可以根據 Windows.Web.Http.Filters 命名空間中的類別來使用篩選。 篩選準則提供處理常式來協助解決常見的 HTTP 服務問題。 篩選可以依序鏈結在一起,以解決更複雜的 HTTP 服務問題。 Windows 8.1隨附數個現成可用的篩選器,可協助程式庫開發人員修正常見的 HTTP 服務問題。 這些篩選包括受監視網路連線的處理常式,以及重試。 例如,程式庫開發人員可以針對網站特定問題撰寫自己的篩選 (,例如,網站可能會使用 503 (伺服器無法使用) 回應來指出應重試要求) 。
如果使用 Windows.Web.Http 命名空間和相關 Windows.Web.Http.Headers 和 Windows.Web.Http.Filters 命名空間的應用程式會下載大量資料, (50 MB 以上) ,則應用程式應該串流這些下載,而不使用預設緩衝。 如果使用預設緩衝,用戶端記憶體使用量會變得非常大,可能會導致效能降低。
如需 C#/VB/C++ 和 XAML 中的範例程式碼,示範如何使用 HttpClient 連線到 HTTP 伺服器,請參閱 HttpClient。
如需 JavaScript 和 HTML 中示範如何使用 HttpClient 連線到 HTTP 伺服器的範例程式碼,請參閱 使用 Windows.Web.Http 連線到 HTTP 伺服器。