Návod: Připojení pomocí úloh a žádostí XML HTTP
Tento příklad ukazuje, jak používat rozhraní IXMLHTTPRequest2 a IXMLHTTPRequest2Callback spolu s úkoly odesílající požadavky HTTP GET a POST na webovou službu v aplikaci Windows Store.Kombinací IXMLHTTPRequest2 spolu s úkoly lze psát kód, který lze kombinovat s ostatními úkoly.Lze například použít úkol stahování jako součást řetězce úkolů.Úloha stahování může rovněž reagovat, když je práce zrušena.
Tip
K provádění požadavků protokolu HTTP z aplikace Windows Store pomocí aplikace jazyka C++ nebo z aplikace pracovní plochy jazyka C++ lze také použít sadu C++ REST SDK.Další informace naleznete v tématu C++ REST SDK (kódové označení "Casablanca").
Další informace o úkolech naleznete v části Funkční paralelismus (Concurrency Runtime).Další informace o používání úkolů v aplikacích Windows Store najdete v tématech Asynchronous programming in C++ a Vytváření asynchronních operací v jazyce C++ pro aplikace pro web Windows Store.
Tento dokument nejprve ukazuje, jak vytvořit třídu HttpRequest a její podpůrné třídy.Potom ukazuje, jak používat tuto třídu z aplikace Windows Store, která používá C++ a XAML.
Úplnější příklad, který používá třídu HttpReader popsanou v tomto dokumentu, lze nalézt v tématu Vývoj aplikace Bing Maps Trip Optimizer pro web Windows Store v jazycích JavaScript a C++.Další příklad, který používá IXMLHTTPRequest2, ale nepoužívá úkoly, naleznete v tématu Quickstart: Connecting using XML HTTP Request (IXMLHTTPRequest2).
Tip
IXMLHTTPRequest2 a IXMLHTTPRequest2Callback jsou rozhraní, která doporučujeme pro použití v aplikaci Windows Store.Tento příklad lze také upravit pro použití v aplikaci klasické pracovní plochy.
Definice tříd HttpRequest, HttpRequestBuffersCallback a HttpRequestStringCallback
Při použití rozhraní IXMLHTTPRequest2 pro vytvoření webových požadavků přes protokol HTTP je implementováno rozhraní IXMLHTTPRequest2Callback pro příjem odpovědí serveru a pro reagování na další události.Tento příklad definuje třídu HttpRequest pro vytvoření webové žádosti a tříd HttpRequestBuffersCallback a HttpRequestStringCallback pro zpracovávání odpovědí procesu.Třídy HttpRequestBuffersCallback a HttpRequestStringCallback podporují třídu HttpRequest. Z kódu aplikace pracujete pouze se třídou HttpRequest.
Metody GetAsync a PostAsync třídy HttpRequest vám umožňují spustit operace HTTP GET a POST.Tyto metody používají třídu HttpRequestStringCallback pro čtení odpovědí serveru ve formě řetězce.Metody SendAsync a ReadAsync Vám umožňují přenášet v datovém proudu velký obsah po částech.Každá tato metoda vrací concurrency::task představující operaci.Metody GetAsync a PostAsync produkují hodnotu task<std::wstring>, kde část wstring představuje odpověď serveru.Metody SendAsync a ReadAsync produkují hodnoty task<void>. Tyto úkoly se dokončí po dokončení operací odesílání a čtení.
Protože rozhraní IXMLHTTPRequest2 pracuje asynchronně, tento příklad používá událost concurrency::task_completion_event pro vytvoření úkolu, který se dokončí poté, co objekt zpětného volání dokončí nebo zruší operaci stahování.Třída HttpRequest vytvoří z tohoto úkolu pokračování založené na úkolu pro nastavení konečného výsledku.Třída HttpRequest používá pokračování založené na úkolu, aby bylo zajištěno pokračování běhu úkolu, i když předchozí úkol vyprodukoval chybu nebo byl zrušen.Další informace o pokračování založeném na úkolech naleznete v tématu Funkční paralelismus (Concurrency Runtime)
Pro podporu zrušení používají třídy HttpRequest, HttpRequestBuffersCallback a HttpRequestStringCallback tokeny zrušení.Třídy HttpRequestBuffersCallback a HttpRequestStringCallback používají metodu concurrency::cancellation_token::register_callback proto, aby mohla událost dokončení úkolu reagovat na zrušení.Toto zpětné volání zrušení přeruší stahování.Další informace o zrušení naleznete v tématu Zrušení v knihovně PPL.
Definice třídy HttpRequest
Pro vytvoření projektu prázdné aplikace XAML použijte šablonu Prázdná aplikace (XAML) jazyka Visual C++.V tomto příkladu pojmenujte projekt UsingIXMLHTTPRequest2.
Přidejte do projektu soubor hlaviček pojmenovaný HttpRequest.h a zdrojový soubor s názvem HttpRequest.cpp.
Do pch.h přidejte tento kód:
Do HttpRequest.h přidejte tento kód:
Do HttpRequest.cpp přidejte tento kód:
Používání třídy HttpRequest v aplikaci pro Windows Store
Tento oddíl ukazuje, jak použít třídu HttpRequest v aplikaci Windows Store.Aplikace poskytuje vstupní textové pole pro definici URL a tlačítka, která provádějí operace GET a POST, a tlačítko, které zruší aktuální operaci.
Použití třídy HttpRequest
V souboru MainPage.xaml definujte prvek StackPanel následujícím způsobem.
Do souboru MainPage.xaml.h přidejte tyto směrnice #include:
Do souboru MainPage.xaml.h do třídy MainPage přidejte tyto členské proměnné s přístupem private:
V souboru MainPage.xaml.h deklarujte private metodu ProcessHttpRequest:
Do souboru MainPage.xaml.cpp přidejte tyto příkazy using:
V souboru MainPage.xaml.cpp implementujte metody GetButton_Click, PostButton_Click a CancelButton_Click třídy MainPage.
Tip
Pokud vaše aplikace nevyžaduje podporu pro zrušení, předejte concurrency::cancellation_token:: žádný metodám HttpRequest::GetAsync a HttpRequest::PostAsync.
V souboru MainPage.xaml.cpp implementujte metodu MainPage::ProcessHttpRequest.
V dialogovém okně Vlastnosti projektu v kategorii Propojovací program zadejte do hodnoty vlastnosti Vstupshcore.lib a msxml6.lib.
Zde je spuštěná aplikace:
Další kroky
Viz také
Referenční dokumentace
task – třída (Concurrency Runtime)
Koncepty
Funkční paralelismus (Concurrency Runtime)
Vytváření asynchronních operací v jazyce C++ pro aplikace pro web Windows Store
Další zdroje
Asynchronous programming in C++
Quickstart: Connecting using XML HTTP Request (IXMLHTTPRequest2)