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.
Porada |
---|
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).
Porada |
---|
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
Użyj języka Visual C++ Pustej aplikacji (XAML) szablon, aby utworzyć pusty projekt aplikacji XAML.W tym przykładzie nazwy projektu UsingIXMLHTTPRequest2.
Dodać do projektu nagłówka pliku o nazwie HttpRequest.h oraz plik źródłowy, który nazywa się HttpRequest.cpp.
W pch.h dodać ten kod:
W HttpRequest.h dodać ten kod:
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
W MainPage.xaml, zdefiniuj StackPanel element w następujący sposób.
W MainPage.xaml.h, dodać #include dyrektywę:
W MainPage.xaml.h, należy dodać te private zmienne składowe do MainPage klasy:
W MainPage.xaml.h, zadeklarować private metoda ProcessHttpRequest:
W MainPage.xaml.cpp, należy dodać te using instrukcji:
Wdrożenie w MainPage.xaml.cpp, GetButton_Click, PostButton_Click, i CancelButton_Click metody MainPage klasy.
Porada Jeśli Twoja aplikacja wymaga obsługi technicznej do anulowania, przekazać concurrency::cancellation_token:: Brak do HttpRequest::GetAsync i HttpRequest::PostAsync metody.
Wdrożenie w MainPage.xaml.cpp, MainPage::ProcessHttpRequest metody.
W oknie właściwości projektu pod Linker, wprowadzania, określ shcore.lib i msxml6.lib.
W tym miejscu jest aplikacja działa:
Następne kroki
Współbieżność środowiska wykonawczego — Wskazówki
Zobacz też
Informacje
task — Klasa (współbieżność środowiska wykonawczego)
Koncepcje
Równoległość zadania (współbieżność środowiska wykonawczego)
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)