Udostępnij za pośrednictwem


Wskazówki: Łączenie za pomocą zadań i żądań XML HTTP

W tym przykładzie przedstawiono sposób użycia IXMLHTTPRequest2 i IXMLHTTPRequest2Callback interfejsów zadania do wysyłania żądań HTTP GET i POST do usługi sieci web w Windows Store aplikacji.Łącząc IXMLHTTPRequest2 wraz z zadań, można napisać kod, który redaguje z innymi zadaniami.Na przykład można użyć zadania pobierania jako część łańcucha zadań.Zadanie pobierania również mogą reagować, gdy praca zostanie anulowane.

PoradaPorada

Umożliwia także C++ SDK POZOSTAŁEJ do wykonania żądania HTTP z Windows Store aplikacji za pomocą aplikacji C++ lub z pulpitu aplikacji C++.Aby uzyskać więcej informacji, zobacz C++ REST SDK (nazwa kodowa „Casablanca”).

Aby uzyskać więcej informacji o zadaniach, zobacz Równoległość zadania (współbieżność środowiska wykonawczego).Aby uzyskać więcej informacji o sposobach używania zadań w Windows Store aplikacji, zobacz Asynchronous programming in C++ i Tworzenie operacji asynchronicznych w języku C++ dla aplikacji sklepu Windows Store.

Ten dokument najpierw pokazuje, jak utworzyć HttpRequest i jego klas pomocniczych.Następnie przedstawiono sposób użycia tej klasy z Windows Store aplikacji, który korzysta z języka C++ i XAML.

Na przykład bardziej kompletny, który używa HttpReader klasy opisanych w tym dokumencie, zobacz Tworzenie aplikacji Bing Maps Trip Optimizer sklepu Windows Store w językach JavaScript i C++.Innym przykładem, który używa IXMLHTTPRequest2 , ale nie używać zadań, zobacz Quickstart: Connecting using XML HTTP Request (IXMLHTTPRequest2).

PoradaPorada

IXMLHTTPRequest2i IXMLHTTPRequest2Callback są to interfejsy, które zalecamy do użycia w Windows Store aplikacji.Można również dostosować w tym przykładzie do użycia w aplikacji pulpitu.

Definiowanie klas HttpRequest, HttpRequestBuffersCallback i HttpRequestStringCallback

Użycie IXMLHTTPRequest2 interfejs do tworzenia żądania sieci web za pomocą protokołu HTTP, można zaimplementować IXMLHTTPRequest2Callback interfejs do odbierania odpowiedzi serwera i reagowania na inne zdarzenia.W tym przykładzie definiuje HttpRequest klasy do utworzenia żądania sieci web i HttpRequestBuffersCallback i HttpRequestStringCallback klasy do przetwarzania odpowiedzi.HttpRequestBuffersCallback i HttpRequestStringCallback klasy wsparcie HttpRequest klasy; działają tylko z HttpRequest klasy z kodu aplikacji.

GetAsync, PostAsync Metody HttpRequest klasy pozwalają zacząć operacji HTTP GET i POST, odpowiednio.Użyj tych metod HttpRequestStringCallback klasy do odczytu odpowiedź serwera jako ciąg znaków.SendAsync i ReadAsync metody umożliwiają przesyłanie strumieniowe zawartości dużych fragmentów.Te metody każdego zwracają concurrency::task reprezentująca operację.GetAsync i PostAsync metody produkcji task<std::wstring> wartości, gdzie wstring część reprezentuje odpowiedzi serwera.SendAsync i ReadAsync metody produkcji task<void> wartości; te zadania ukończone po ukończeniu operacji wysyłania i Odczyt.

Ponieważ IXMLHTTPRequest2 interfejsy działa asynchronicznie, w tym przykładzie użyto concurrency::task_completion_event w celu utworzenia zadania, który kończy się po zakończeniu lub anuluje operację pobierania obiektu wywołania zwrotnego.HttpRequest Klasy tworzy kontynuacji opartego na zadaniach z tego zadania, aby ustawić ostateczny wynik.HttpRequest Klasy używa kontynuacji opartych na zadaniach, aby zapewnić uruchamiany przez zadanie utrzymania nawet jeśli poprzednie zadanie generuje błąd lub zostało anulowane.Aby uzyskać więcej informacji o kontynuacji opartych na zadaniach zobaczRównoległość zadania (współbieżność środowiska wykonawczego)

Do obsługi anulowania, HttpRequest, HttpRequestBuffersCallback, i HttpRequestStringCallback klasy użyć tokenów anulowania.HttpRequestBuffersCallback i HttpRequestStringCallback wykorzystania klasy concurrency::cancellation_token::register_callback metoda, aby włączyć zdarzenie zakończenia zadań odpowiada na anulowanie.To wywołanie zwrotne anulowania przerywa pobieranie.Aby uzyskać więcej informacji o unieważnieniu, zobacz Anulowanie w PPL.

Aby zdefiniować klasę HttpRequest

  1. Użyj języka Visual C++ Pustej aplikacji (XAML) szablon, aby utworzyć pusty projekt aplikacji XAML.W tym przykładzie nazwy projektu UsingIXMLHTTPRequest2.

  2. Dodać do projektu nagłówka pliku o nazwie HttpRequest.h oraz plik źródłowy, który nazywa się HttpRequest.cpp.

  3. W pch.h dodać ten kod:

  4. W HttpRequest.h dodać ten kod:

  5. W HttpRequest.cpp dodać ten kod:

Korzystając z klasy HttpRequest w Windows Store aplikacji

W tej sekcji przedstawiono sposób użycia HttpRequest klasy w Windows Store aplikacji.Aplikacja zawiera pola wprowadzania, definiujący zasób Adres URL i przycisku polecenia, które wykonywania operacji GET i POST i przycisku polecenia, które anuluje bieżącą operację.

Aby użyć klasy HttpRequest

  1. W MainPage.xaml, zdefiniuj StackPanel element w następujący sposób.

  2. W MainPage.xaml.h, dodać #include dyrektywę:

  3. W MainPage.xaml.h, należy dodać te private zmienne składowe do MainPage klasy:

  4. W MainPage.xaml.h, zadeklarować private metoda ProcessHttpRequest:

  5. W MainPage.xaml.cpp, należy dodać te using instrukcji:

  6. Wdrożenie w MainPage.xaml.cpp, GetButton_Click, PostButton_Click, i CancelButton_Click metody MainPage klasy.

    PoradaPorada

    Jeśli Twoja aplikacja wymaga obsługi technicznej do anulowania, przekazać concurrency::cancellation_token:: Brak do HttpRequest::GetAsync i HttpRequest::PostAsync metody.

  7. Wdrożenie w MainPage.xaml.cpp, MainPage::ProcessHttpRequest metody.

  8. W oknie właściwości projektu pod Linker, wprowadzania, określ shcore.lib i msxml6.lib.

W tym miejscu jest aplikacja działa:

Uruchamianie aplikacji dla Sklepu Windows

Następne kroki

Współbieżność środowiska wykonawczego — Wskazówki

Zobacz też

Informacje

task — Klasa (współbieżność środowiska wykonawczego)

task_completion_event — Klasa

Koncepcje

Równoległość zadania (współbieżność środowiska wykonawczego)

Anulowanie w PPL

Tworzenie operacji asynchronicznych w języku C++ dla aplikacji sklepu Windows Store

Inne zasoby

Asynchronous programming in C++

Quickstart: Connecting using XML HTTP Request (IXMLHTTPRequest2)

IXMLHTTPRequest2

IXMLHTTPRequest2Callback