Share via


連線到 Web 服務 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

這些主題 示範在 Windows 執行階段應用程式中連線到 Web 服務的各種方法。 建議的方法是使用 Windows.Web.Http.HttpClient,這是所有語言都可使用的新 Windows 執行階段類別。 這是功能最完整且強大的 API,應用程式可用來存取 Web 服務。

Windows.Web.Http 命名空間中的類別為現代化 HTTP 用戶端應用程式提供程式設計介面。Windows.Web.Http 命名空間和相關的 Windows.Web.Http.HeadersWindows.Web.Http.Filters 命名空間提供 HTTP 用戶端元件,這些元件讓使用者能夠透過 HTTP 提出 HTTP 要求,以及接收來自現代化 Web 服務的 HTTP 回應。

對於基本的 HTTP 要求操作,Windows.Web.Http.HttpClient 提供簡單的介面來處理最常見的工作,並提供合理的預設值,用來進行可套用到大多數案例的驗證 (AUTH)。如果是更複雜的 HTTP 操作,則可使用許多其他功能。

本節的主題也會討論 XMLHttpRequest 的適用於 JavaScript 的 Windows Library 包裝函式 (名稱為 WinJS.xhr)。WinJS.xhr 可以在您的應用程式中輕鬆存取網頁內容。您可以使用 WinJS.xhr,提出 HTTP 或 HTTPS 要求來下載或上傳任何格式的內容和檔案。

XMLHttpRequestWinJS.xhr 不同,後者可以指定是否建立非同步要求,而前者則永遠是非同步的。WinJS.xhr 會傳回 WinJS.Promise,這樣您就可以使用 thendone 方法,處理完成的要求、錯誤以及進行中的要求。

警告  您現在可以使用 XMLHttpRequest 來傳輸非常大型的物件,例如 Blob 物件和 FormData 物件,不過可能需要一段很長的時間才能完成。Windows.Web.Http.HttpClient 也可以用來傳送或接收非常大型的物件 (包含串流在內)。因為應用程式可能隨時終止,您應該考慮在 Windows.Networking.BackgroundTransfer 命名空間中使用背景傳輸來進行這些操作。如需上傳和下載大型內容的詳細資訊,請參閱如何上傳檔案在背景傳輸資料

 

下表列出以 JavaScript 撰寫的應用程式存取 Web 服務時可用的 API。平台表示首次新增該項功能的 Windows 版本。

API 平台 註解

Windows.Web.Http.HttpClient

Windows 8.1、Windows Phone 8.1、Windows Server 2012 R2

建議您使用這個方法連線到 HTTP 伺服器以傳送和接收資料。

以 JavaScript、C#、Visual Basic 及 C++ 撰寫的應用程式也支援此功能

WinJS.xhr Windows 8、Windows Phone 8.1、Windows Server 2012

在 Windows 8 和 Windows Server 2012 上,當 XMLHttpRequest 不適用時,就會建議使用此方法。

XMLHttpRequest Windows 8、Windows Phone 8.1、Windows Server 2012 大多數最新 Web 瀏覽器的 JavaScript 實作都能使用此物件和 API。

 

開發人員對象

使用 JavaScript 和 HTML,並且對建立連線到 Web 服務的應用程式有興趣的開發人員。

本主題中的資訊適用於以 JavaScript 和 HTML 撰寫的應用程式。

如需以 C++/XAML 撰寫的應用程式與使用 .NET Framework 4.5 且以 C# 或 Visual Basic 撰寫的應用程式如何連線到 Web 服務的詳細資訊,請參閱連線到 Web 服務 (XAML)

在這個章節中

主題 說明

如何使用 Windows.Web.Http 連線到 HTTP 伺服器

使用 Windows.Web.Http 命名空間中的 Windows.Web.Http.HttpClient 類別,將 GET 要求傳送到 Web 服務並抓取回應。

如何要求 HTTPS 連線

使用 "ms-https-connections-only" meta 元素值,您可以禁止應用程式透過 HTTP 連線來瀏覽或擷取其他非媒體類型的網路內容。當您將這個 meta 元素的 content 屬性設成 "true" 時,瀏覽 HTTP 和擷取非媒體類型的網路內容就會失敗。

如何使用 WinJS.xhr 下載檔案

WinJS.xhr 讓應用程式可以輕鬆下載網頁內容。這個主題說明如何使用 WinJS.xhr 下載檔案、處理任何錯誤以及報告下載進度,也說明如何下載不同類型的內容。

如何使用 WinJS.xhr 上傳二進位資料

您可以在使用 WinJS.xhr (其中包裝 XMLHttpRequest) 時,上傳和下載二進位資料。這個範例說明如何從圖片上傳點陣圖。開啟點陣圖檔案的 Windows 執行階段方法會傳回 IRandomAccessStream,因此您必須使用 MSApp.createBlobFromRandomAccessStream 將它轉換成 Blob

警告  您現在可以使用 XMLHttpRequest 來上傳或下載大於數 MB 的物件,例如 Blob 物件和 FormData 物件,不過可能需要一段很長的時間才能完成。因為應用程式可能隨時都會終止,您應該考慮使用 Windows 執行階段背景傳輸 API 來進行這些操作。如需上傳和下載內容的詳細資訊,請參閱如何上傳檔案如何下載檔案。如需一般的背景傳輸討論,請參閱<Transferring data in the background>。
 

如何確定 WinJS.xhr 會重新傳送要求

當您使用 WinJS.xhr 要求 Web 資源時,可能會快取回應,這表示稍後的要求將會傳回已經存在於用戶端電腦上的資源版本,而不是重新傳送要求。不過,您可以新增 HTTP 標頭,確定即使要求已經被快取,還是會再傳送一次。

使用 WinJS.xhr 或 HttpClient 設定逾時值

使用 XMLHttpRequest 時,可以直接設定逾時值,但是使用 Windows.Web.Http.HttpClientWinJS.xhr 時則無法執行此動作。不過,有一個方法可以在 WinJS.Promise 物件上設定逾時。您可以透過呼叫 WinJS.Promise.timeout,確認如果要求在指定時間內沒有完成就取消要求。

如何使用 WinJS.xhr 建立交互式 Web 應用程式 (Mashup)

交互式 Web 應用程式 (Mashup) 是使用兩個以上的來源所建立的新 Web 應用程式。這個範例會示範如何使用 XMLHttpRequest (XHR) 來擷取和顯示遠端的真正簡易新聞訂閱方式 (RSS) 摘要。

 

相關主題

其他資源

應用程式功能宣告

處理網路應用程式中的例外狀況

如何設定網路隔離功能

如何啟用回送以及偵錯網路隔離

參考

Windows.Foundation.Uri

Windows.Web.Http

Windows.Web.Http.Filters

Windows.Web.Http.Headers

Windows.Web.Http.HttpClient

WinJS.xhr

XMLHttpRequest

範例

HttpClient 範例

整合 Web 服務內容和控制項的範例

使用 Blob 儲存和載入內容範例

Web 驗證範例

XHR、處理瀏覽錯誤及 URL 配置範例