Sdílet prostřednictvím


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

  1. 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.

  2. Přidejte do projektu soubor hlaviček pojmenovaný HttpRequest.h a zdrojový soubor s názvem HttpRequest.cpp.

  3. Do pch.h přidejte tento kód:

  4. Do HttpRequest.h přidejte tento kód:

  5. 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

  1. V souboru MainPage.xaml definujte prvek StackPanel následujícím způsobem.

  2. Do souboru MainPage.xaml.h přidejte tyto směrnice #include:

  3. Do souboru MainPage.xaml.h do třídy MainPage přidejte tyto členské proměnné s přístupem private:

  4. V souboru MainPage.xaml.h deklarujte private metodu ProcessHttpRequest:

  5. Do souboru MainPage.xaml.cpp přidejte tyto příkazy using:

  6. 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.

  7. V souboru MainPage.xaml.cpp implementujte metodu MainPage::ProcessHttpRequest.

  8. 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:

Spuštěním aplikace pro Windows Store

Další kroky

Návody k Concurrency Runtime

Viz také

Referenční dokumentace

task – třída (Concurrency Runtime)

task_completion_event – třída

Koncepty

Funkční paralelismus (Concurrency Runtime)

Zrušení v knihovně PPL

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)

IXMLHTTPRequest2

IXMLHTTPRequest2Callback