Herstellen einer Verbindung mit Webdiensten (HTML)
[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]
In diesen Themen werden verschiedene Methoden vorgestellt, wie Sie in einer Windows-Runtime-App eine Verbindung mit einem Webdienst herstellen können. Die empfohlene Methode ist die Verwendung von Windows.Web.Http.HttpClient, einer neuen Windows-Runtime-Klasse, die für alle Sprachen verfügbar ist. Dies ist die leistungsstärkste API mit dem größten Funktionsumfang, um in einer App auf einen Webdienst zuzugreifen.
Klassen im Windows.Web.Http-Namespace stellen eine Programmierschnittstelle für moderne HTTP-Client-Apps bereit. Der Windows.Web.Http-Namespace und die dazugehörigen Namespaces Windows.Web.Http.Headers und Windows.Web.Http.Filters stellen HTTP-Clientkomponenten bereit, mit denen Benutzer HTTP-Anforderungen ausführen und HTTP-Anforderungen von modernen Webdiensten per HTTP empfangen können.
Für grundlegende HTTP-Anforderungsvorgänge verfügt Windows.Web.Http.HttpClient über eine einfache Schnittstelle zum Durchführen allgemeiner Aufgaben. Darüber werden auch angemessene Standardeinstellungen für die Authentifizierung (AUTH) bereitgestellt, die für die meisten Szenarios geeignet sind. Für komplexere HTTP-Vorgänge sind viele weitere Funktionen verfügbar.
In den Themen in diesem Abschnitt wird auch ein Wrapper für die Windows-Bibliothek für JavaScript für XMLHttpRequest mit der Bezeichnung WinJS.xhr beschrieben. WinJS.xhr bietet eine einfache Möglichkeit für den Zugriff auf Webinhalte in Ihrer App. Sie können mit WinJS.xhr eine HTTP- oder HTTPS-Anforderung zum Hoch- oder Herunterladen von Inhalten und Dateien in beliebigen Formaten senden.
Bei XMLHttpRequest können Sie angeben, ob die Anforderung asynchron erfolgen soll. Dagegen wird WinJS.xhr in jedem Fall asynchron ausgeführt. WinJS.xhr gibt ein WinJS.Promise zurück, damit abgeschlossene Anforderungen, Fehler und laufende Anforderungen unter Verwendung der then- oder der done-Methode behandelt werden können.
Warnung Es ist jetzt möglich, XMLHttpRequest zu verwenden, um sehr große Objekte, wie Blob- und FormData-Objekte, zu übertragen, deren Upload sehr viel Zeit in Anspruch nehmen kann. Sie können Windows.Web.Http.HttpClient auch verwenden, um sehr große Objekte zu senden oder zu empfangen, z. B. Streams. Da eine App jederzeit beendet werden kann, sollten Sie für diese Vorgänge ggf. die Hintergrundübertragung im Windows.Networking.BackgroundTransfer-Namespace verwenden. Weitere Informationen zum Hoch- und Herunterladen umfangreicher Inhalte finden Sie unter So wird's gemacht: Hochladen von Dateien und Übertragen von Daten im Hintergrund.
In der folgenden Tabelle sind APIs aufgeführt, mit denen in JavaScript geschriebene Apps auf einen Webdienst zugreifen können. Die Plattform gibt die Windows-Version an, unter der das Feature erstmals hinzugefügt wurde.
API | Plattform | Kommentare |
---|---|---|
Windows 8.1, Windows Phone 8.1, Windows Server 2012 R2 | Dies ist die empfohlene Methode zum Herstellen einer Verbindung mit einem HTTP-Server, um Daten zu senden und zu empfangen. Dieses Feature wird auch in Apps unterstützt, die in JavaScript, C#, Visual Basic und C++ geschrieben wurden. |
|
WinJS.xhr | Windows 8, Windows Phone 8.1, Windows Server 2012, | Unter Windows 8 und Windows Server 2012 war dies die empfohlene Methode, als XMLHttpRequest noch nicht gut geeignet war. |
XMLHttpRequest | Windows 8, Windows Phone 8.1, Windows Server 2012 | Dieses Objekt und diese API sind in JavaScript-Implementierungen in den meisten modernen Webbrowsern verfügbar. |
Entwicklerzielgruppe
Entwickler, die JavaScript und HTML verwenden und Apps entwickeln möchten, die Verbindungen mit einem Webdienst herstellen.
Die Informationen in diesem Thema gelten für Apps in JavaScript und HTML.
Weitere Informationen zum Herstellen einer Verbindung mit einem Webdienst für Apps mit C++/XAML sowie Apps, die .NET Framework 4.5 nutzen und in C# oder Visual Basic geschrieben wurden, finden Sie unter Herstellen einer Verbindung mit Webdiensten (XAML).
Inhalt dieses Abschnitts
Thema | Beschreibung |
---|---|
So wird's gemacht: Herstellen einer Verbindung mit einem HTTP-Server mit "Windows.Web.Http" |
Senden Sie eine GET-Anforderung an einen Webdienst, und rufen Sie die Antwort mithilfe der Windows.Web.Http.HttpClient-Klasse im Windows.Web.Http-Namespace ab. |
Mit dem "ms-https-connections-only"meta-Elementwert können Sie verhindern, dass Ihre App HTTP-Verbindungen für die Navigation oder zum Abrufen anderer Webinhalte, bei denen es sich nicht um Medien handelt, verwendet. Wenn Sie das content-Attribut dieses meta-Elements auf "true" festlegen, tritt bei der Navigation sowie beim Abrufen von Webinhalten, die keine Medien sind, über HTTP ein Fehler auf. |
|
So wird's gemacht: Herunterladen einer Datei mit "WinJS.xhr" |
WinJS.xhr bietet eine einfache Möglichkeit zum Herunterladen von Webinhalten in Ihre App. In diesem Thema werden das Herunterladen einer Datei mit WinJS.xhr, das Behandeln von Fehlern und das Erstellen von Berichten zum Downloadstatus erläutert. Zudem wird gezeigt, wie Sie verschiedene Inhaltstypen herunterladen. |
Wenn Sie WinJS.xhr verwenden (das XMLHttpRequest umschließt), können Sie Binärdaten hochladen und herunterladen. Dieses Beispiel zeigt, wie Sie eine Bitmap aus Ihren Bildern hochladen. Die Windows-Runtime-Methode, mit der die Bitmap-Datei geöffnet wird, gibt einen IRandomAccessStream zurück, daher müssen Sie diesen mit MSApp.createBlobFromRandomAccessStream in ein Blob konvertieren. Warnung Sie können jetzt mit XMLHttpRequest Objekte hoch- und herunterladen, die größer als ein paar MB sind, z. B. Blob-Objekte und FormData-Objekte, bei denen der Vorgang lange dauert. Da Apps jederzeit beendet werden können, sollten Sie für diese Vorgänge ggf. die Hintergrundübertragungs-APIs der Windows-Runtime verwenden. Weitere Informationen zum Hoch- und Herunterladen von Inhalten finden Sie unter So wird's gemacht: Hochladen einer Datei und So wird's gemacht: Herunterladen einer Datei. Allgemeine Informationen zu Hintergrundübertragungen finden Sie unter Transferring data in the background. |
|
So wird's gemacht: Sicherstellen, dass "WinJS.xhr" Anforderungen erneut sendet |
Wenn Sie mit WinJS.xhr eine Webressource anfordern, wird die Antwort unter Umständen zwischengespeichert. Dies bedeutet, dass nachfolgende Anforderungen die Version der Ressource zurückgeben, die bereits auf dem Client-PC vorhanden sind, anstatt die Anforderung erneut durchzuführen. Sie können aber auch einen HTTP-Header einfügen, der sicherstellt, dass auch dann erneute Anforderungen gesendet werden, wenn die Antwort bereits zwischengespeichert wurde. |
Festlegen von Timeoutwerten mit "WinJS.xhr" oder "HttpClient" |
Wenn Sie XMLHttpRequest verwenden, können Sie Timeoutwerte direkt festlegen, bei der Verwendung von Windows.Web.Http.HttpClient oder WinJS.xhr ist dies dagegen nicht möglich. Es gibt jedoch eine Möglichkeit, Timeouts für WinJS.Promise-Objekte festzulegen. Rufen Sie WinJS.Promise.timeout auf. Damit stellen Sie sicher, dass die Anforderung abgebrochen wird, wenn sie nicht innerhalb der vorgegebenen Zeit abgeschlossen ist. |
Ein Mashup ist eine Webanwendung, die Standarddaten aus zwei oder mehr Quellen zum Erstellen von etwas Neuem verwendet. In diesem Beispiel ist die Verwendung von XMLHttpRequest (XHR) zum Abrufen und Anzeigen eines Remote-RSS-Feed (Really Simple Syndication) zu sehen. |
Verwandte Themen
Weitere Ressourcen
Deklaration der App-Funktionen
Behandeln von Ausnahmen in Netzwerk-Apps
Konfigurieren von Netzwerkisolationsfunktionen
Aktivieren von Loopback und Debuggen der Netzwerkisolation.
Referenz
Beispiele
Integrieren von Inhalten und Steuerelementen aus dem Webdienstbeispiel
Beispiel zum Speichern und Laden von Inhalten mithilfe eines Blobs
Beispiel zur Webauthentifizierung
Beispiel zu XHR, Behandeln von Navigationsfehlern und URL-Schemas