Compartilhar via


Instruções passo a passo: conexão usando tarefas e solicitações HTTP XML

Este exemplo mostra como usar IXMLHTTPRequest2 e IXMLHTTPRequest2Callback interfaces junto com tarefas enviar o HTTP GET e solicitações POST a um serviço da Web em um aplicativo de Windows Store . Combinando IXMLHTTPRequest2 junto com tarefas, você pode escrever o código que compõem com outras tarefas. Por exemplo, você pode usar a tarefa de download como parte de uma cadeia de tarefas. A tarefa de download também pode responder quando o trabalho for cancelado.

Dica

Você também pode usar o RESTO SDK do C++ para executar solicitações HTTP de um aplicativo de Windows Store usando o aplicativo C++ ou de um aplicativo de área de trabalho C++.Para obter mais informações, consulte C++ REST SDK (codinome "Casablanca").

Para obter mais informações sobre tarefas, consulte Paralelismo de tarefa (tempo de execução de simultaneidade). Para obter mais informações sobre como usar tarefas em um aplicativo de Windows Store , consulte Asynchronous programming in C++ e Criando operações assíncronas n C++ para aplicativos da Windows Store.

Este documento primeiro mostra como criar HttpRequest e suas classes de suporte. Mostra como usar essa classe de um aplicativo de Windows Store que usa C++ e XAML.

Para um mais o exemplo completo que usa a classe de HttpReader descrita neste documento, consulte Desenvolvendo o Bing Maps Trip Optimizer, um aplicativo da Windows Store em JavaScript e C++. Para obter outro exemplo que usa IXMLHTTPRequest2 mas não use tarefas, consulte Quickstart: Connecting using XML HTTP Request (IXMLHTTPRequest2).

Dica

IXMLHTTPRequest2 e IXMLHTTPRequest2Callback são as interfaces que é recomendável para uso em um aplicativo de Windows Store .Você também pode adaptar esse exemplo para uso em um aplicativo de área de trabalho.

Definindo as Classes HttpRequest, HttpRequestBuffersCallback e HttpRequestStringCallback

Quando você usa a interface de IXMLHTTPRequest2 para criar solicitações da Web por HTTP, você implementa a interface de IXMLHTTPRequest2Callback para receber uma resposta do servidor e reagir a outros eventos. Este exemplo define a classe de HttpRequest para criar solicitações da Web, e as classes de HttpRequestBuffersCallback e de HttpRequestStringCallback processar respostas. As classes de HttpRequestBuffersCallback e de HttpRequestStringCallback oferecem suporte à classe de HttpRequest ; você só funciona com a classe de HttpRequest do código de aplicativo.

GetAsync, métodos de PostAsync da classe de HttpRequest permite iniciar o HTTP e AS operações GET, respectivamente. Esses métodos usam a classe de HttpRequestStringCallback para ler a resposta do servidor como uma cadeia de caracteres. Os métodos de SendAsync e de ReadAsync permite passar o conteúdo grande em partes. Esses métodos cada retorno concurrency::task para representar a operação. O valor de task<std::wstring> de produto dos métodos de GetAsync e de PostAsync , onde a parte de wstring representa a resposta do servidor. Os métodos de SendAsync e de ReadAsync gerenciem valores de task<void> ; essas tarefas forem concluídos quando o envio e as operações de leitura é concluído.

Como as interfaces de IXMLHTTPRequest2 atuam de forma assíncrona, o usa concurrency::task_completion_event este exemplo criar uma tarefa que seja concluída depois que o objeto de retorno de chamada é concluída ou cancele a operação de carregamento. A classe de HttpRequest cria uma acompanhamento de tarefas com base dessa tarefa definir o resultado final. A classe de HttpRequest usa uma acompanhamento de tarefas com base para garantir que a tarefa executa para continuar mesmo se a tarefa anterior gerencie um erro ou é cancelada. Para obter mais informações sobre as continuações baseadas, consulte Paralelismo de tarefa (tempo de execução de simultaneidade)

Para oferecer suporte ao cancelamento, HttpRequest, HttpRequestBuffersCallback, e as classes de HttpRequestStringCallback usam tokens de cancelamento. As classes de HttpRequestBuffersCallback e de HttpRequestStringCallback usam o método de concurrency::cancellation_token::register_callback para habilitar o evento de conclusão da tarefa para responder a ser cancelado. Este retorno de chamada de cancelamento anula o download. Para obter mais informações sobre de cancelamento, consulte Cancelamento no PPL.

Para Definir a Classe HttpRequest

  1. Use o modelo do Visual C++ Anular o aplicativo (XAML) para criar um projeto de aplicativo em branco XAML. Este exemplo denomina o projeto UsingIXMLHTTPRequest2.

  2. Adicionar ao projeto um arquivo de cabeçalho que é chamado HttpRequest.h e um arquivo de origem chamado HttpRequest.cpp.

  3. Em pch.h, adicionar esse código:

  4. Em HttpRequest.h, adicionar esse código:

  5. Em HttpRequest.cpp, adicionar esse código:

Usando a Classe HttpRequest em um Aplicativo do Windows Store

Esta seção mostra como usar a classe de HttpRequest em um aplicativo de Windows Store . O aplicativo fornece uma caixa de entrada que define um recurso de URL, e o botão que executa comandos GET e POSTA operações, e um comando do botão que cancela a operação atual.

Para Usar a Classe HttpRequest

  1. Em MainPage.xaml, defina o elemento StackPanel como a seguir.

  2. Em MainPage.xaml.h, adicione esta política de #include :

  3. Em MainPage.xaml.h, adicionar essas variáveis do membro de private à classe de MainPage :

  4. Em MainPage.xaml.h, declarar o método ProcessHttpRequestde private :

  5. Em MainPage.xaml.cpp, adicione estas instruções de using :

  6. Em MainPage.xaml.cpp, implemente GetButton_Click, PostButton_Click, e os métodos de CancelButton_Click de MainPage classe.

    Dica

    Se seu aplicativo não exigir o suporte para o cancelamento, passe concurrency::cancellation_token::none os métodos de HttpRequest::GetAsync e de HttpRequest::PostAsync .

  7. Em MainPage.xaml.cpp, implemente o método de MainPage::ProcessHttpRequest .

  8. Nas propriedades do projeto, em Vinculador, Entrada, especifica shcore.lib e msxml6.lib.

Aqui está o aplicativo em execução:

O aplicativo da Windows Store em execução

Próximas etapas

Instruções passo a passo do Tempo de Execução de Simultaneidade

Consulte também

Referência

Classe task (Tempo de Execução de Simultaneidade)

Classe task_completion_event

Conceitos

Paralelismo de tarefa (tempo de execução de simultaneidade)

Cancelamento no PPL

Criando operações assíncronas n C++ para aplicativos da Windows Store

Outros recursos

Asynchronous programming in C++

Quickstart: Connecting using XML HTTP Request (IXMLHTTPRequest2)

IXMLHTTPRequest2

IXMLHTTPRequest2Callback