Tarefas do servidor HTTP

Normalmente, as tarefas do servidor HTTP são executadas em uma ordem específica; ou seja, uma tarefa deve ser concluída e a saída obtida antes do início da próxima tarefa.

Uma página de tarefas é criada para apresentar código de exemplo sobre tarefas específicas que um aplicativo HTTP Server executa. Uma página de tarefa vincula-se ao arquivo de extensão C do exemplo de servidor HTTP. Quando você instala o PSDK na unidade C:\ de um computador local, o aplicativo de exemplo de servidor completo é instalado em C:\Program Files\Microsoft SDK\Samples\netds\http\server.

A lista a seguir identifica as tarefas do Servidor HTTP:

Inicializar o serviço HTTP

O serviço HTTP é inicializado usando a funçãoHttpInitializee o identificador para a fila de solicitações é criado usando HttpCreateHttpHandle. O servidor deve ser inicializado antes que qualquer outra função do servidor possa ser chamada. A fila de solicitações deve ser criada antes que o serviço possa registrar URLs para ouvir solicitações HTTP de entrada.

Para obter mais informações e um exemplo de código, consulte inicializar o serviço HTTP.

Registre os URLs para ouvir

Para que a API do Servidor HTTP escute as solicitações de entrada, URLs específicas são registradas com a API chamando a funçãoHttpAddUrl. As solicitações de entrada que correspondem a essas URLs são roteadas para a fila de solicitações especificada nesta chamada.

Para obter mais informações e um exemplo de código, consulte Registrar as URLs para ouvir em.

Ligue para a rotina para receber uma solicitação

A função DoReceiveRequest aloca o buffer de solicitação, inicializa a ID da solicitação e inicia o loop para receber solicitações.

Para obter mais informações e um exemplo de código, consulte chamar a rotina para receber uma solicitação.

Receba o Pedido

A API do Servidor HTTP fornece uma estrutura de solicitação para armazenar a solicitação de entrada analisada. Essa estrutura é alocada pelo aplicativo e inicializada quando uma solicitação de entrada é recebida. O aplicativo chama a funçãoHttpReceiveHttpRequest para receber a solicitação. Se o buffer de solicitação for muito pequeno para receber a solicitação, o aplicativo poderá aumentar o tamanho do buffer e chamar HttpReceiveHttpRequest novamente para receber a solicitação inteira.

Para obter mais informações e um exemplo de código, consulte Receber uma solicitação.

Manipular a solicitação HTTP

O aplicativo de exemplo mostra como manipular os verbos de solicitação HTTP GET e POST. O aplicativo envia um erro 503 (NOT_IMPLEMENTED) se verbos estão presentes na solicitação que o aplicativo não manipula.

Observe que a URL a ser usada no tratamento de solicitações é a URL processada contida no CookedUrl membro da estrutura HTTP_REQUEST_V1. Não faça o URL não processado no membro do pRawUrl, que é exclusivamente para fins estatísticos e de rastreamento.

Para obter mais informações e um exemplo de código, consulte manipular a solicitação HTTP.

Enviar a resposta HTTP

A estrutura de resposta é alocada e inicializada com o código de status e uma frase de razão na macro INITIALIZE_HTTP_RESPONSE. Um cabeçalho HTTP conhecido é adicionado à estrutura de resposta na macro ADD_KNOWN_HEADER e o corpo da entidade é adicionado à resposta de um bloco de dados da memória. A função HttpSendHttpResponse é chamada para enviar a resposta. Neste exemplo, o aplicativo envia uma resposta simples de 200 OK para a solicitação GET.

Para obter mais informações e um exemplo de código, consulte Enviar uma resposta HTTP.

Enviar a resposta HTTP POST

A solicitação POST requer mais processamento do que a solicitação GET. O corpo da entidade de solicitação é recebido chamando a funçãoHttpReceiveRequestEntityBody. O aplicativo envia a resposta e o corpo da entidade de resposta em chamadas separadas para a API do servidor HTTP. Os cabeçalhos de resposta são enviados com o HttpSendHttpResponse. O corpo da entidade é enviado em um bloco de dados de um identificador de arquivo com a funçãoHttpSendResponseEntityBody.

Para obter mais informações e um exemplo de código, consulte Enviar uma resposta HTTP POST.

Limpar a API do servidor HTTP

As operações de limpeza para a API do Servidor HTTP incluem:

  • Remoção de todos os URLs registados.
  • Fechando o identificador para a fila de solicitações.
  • Encerrando os recursos criados pela API do Servidor HTTP.

O aplicativo chama a função HttpRemoveUrl para cancelar o registro de URLs registrados pela funçãoinicialHttpAddUrl. O aplicativo também chama HttpTerminate para cada chamada para HttpInitialize com configurações de sinalizador correspondentes. Esta chamada encerra todos os recursos criados pela chamada para HttpInitialize.

Para obter mais informações e um exemplo de código, consulte Cleanup the HTTP Server API.