Função WsReceiveMessage (webservices.h)
Receba uma mensagem e desserialize o corpo da mensagem como um valor.
Sintaxe
HRESULT WsReceiveMessage(
[in] WS_CHANNEL *channel,
[in] WS_MESSAGE *message,
const WS_MESSAGE_DESCRIPTION **messageDescriptions,
[in] ULONG messageDescriptionCount,
[in] WS_RECEIVE_OPTION receiveOption,
[in] WS_READ_OPTION readBodyOption,
[in, optional] WS_HEAP *heap,
void *value,
[in] ULONG valueSize,
ULONG *index,
[in, optional] const WS_ASYNC_CONTEXT *asyncContext,
[in, optional] WS_ERROR *error
);
Parâmetros
[in] channel
O canal do qual receber.
[in] message
O objeto de mensagem usado para receber.
A mensagem deve estar em WS_MESSAGE_STATE_EMPTY estado.
messageDescriptions
Uma matriz de ponteiros para descrições de mensagens que especifica os metadados para os tipos esperados de mensagens.
[in] messageDescriptionCount
O número de itens na matriz messageDescriptions.
[in] receiveOption
Se a mensagem é necessária. Consulte WS_RECEIVE_OPTION para obter mais informações.
[in] readBodyOption
Se o elemento body é necessário e como alocar o valor.
Consulte WS_READ_OPTION para obter mais informações.
[in, optional] heap
O heap no qual armazenar os valores desserializados. Se o heap não for necessário para o tipo fornecido, esse parâmetro poderá ser NULL.
value
A interpretação desse parâmetro depende do WS_READ_OPTION.
Se WS_RECEIVE_OPTIONAL_MESSAGE for especificado para o parâmetro receiveOption e não houver mais mensagens disponíveis no canal, esse parâmetro não será tocado. Nesse caso, a função retorna WS_S_END. (Consulte Valores retornados dos Serviços Web do Windows.)
Se o bodyElementDescription do WS_MESSAGE_DESCRIPTION correspondente for NULL, esse parâmetro não será tocado. Nesse caso, o parâmetro não precisa ser especificado.
[in] valueSize
A interpretação desse parâmetro depende do WS_READ_OPTION.
index
Se WS_RECEIVE_OPTIONAL_MESSAGE for especificado para o parâmetro receiveOption e não houver mais mensagens disponíveis no canal, esse parâmetro não será alterado. Nesse caso, a função retornará WS_S_END.
Caso contrário, se a função for bem-sucedida, conterá o índice baseado em zero na matriz de descrições de mensagens que indicam qual correspondeu.
Esse parâmetro poderá ser NULL se o chamador não estiver interessado no valor (por exemplo, se houver apenas uma descrição da mensagem).
[in, optional] asyncContext
Informações sobre como invocar a função de forma assíncrona ou NULL se estiver invocando de forma síncrona.
[in, optional] error
Especifica onde informações adicionais de erro devem ser armazenadas se a função falhar.
Retornar valor
Essa função pode retornar um desses valores.
Código de retorno | Descrição |
---|---|
|
A operação assíncrona ainda está pendente. |
|
A opção de recebimento WS_RECEIVE_OPTIONAL_MESSAGE foi especificada e não há mais mensagens disponíveis para o canal. |
|
A mensagem recebida continha uma falha. A falha pode ser extraída do WS_ERROR usando WsGetErrorProperty. |
|
A operação foi anulada. |
|
A operação não é permitida devido ao estado atual do objeto. |
|
O ponto de extremidade remoto não existe ou não pôde ser localizado. |
|
O acesso foi negado pelo ponto de extremidade remoto. |
|
A conexão com o ponto de extremidade remoto foi encerrada. |
|
O ponto de extremidade remoto não pôde processar a solicitação. |
|
O ponto de extremidade remoto não está atualmente em serviço neste local. |
|
O ponto de extremidade remoto não pode processar a solicitação devido à sobrecarga. |
|
O ponto de extremidade remoto não estava acessível. |
|
A URL do endereço do ponto de extremidade é inválida. |
|
Os dados de entrada não estavam no formato esperado ou não tinham o valor esperado. |
|
A operação não foi concluída dentro do tempo alocado. |
|
O acesso foi negado pelo servidor proxy HTTP. |
|
O servidor proxy HTTP não pôde processar a solicitação. |
|
Uma cota foi excedida. |
|
A verificação de segurança não foi bem-sucedida para os dados recebidos. |
|
Falha em uma operação de segurança na estrutura dos Serviços Web do Windows. |
|
Um token de segurança foi rejeitado pelo servidor porque expirou. |
|
O servidor proxy HTTP requer o esquema de autenticação HTTP 'basic'. |
|
O servidor proxy HTTP requer o esquema de autenticação HTTP 'digest'. |
|
O servidor proxy HTTP requer o esquema de autenticação HTTP 'negotiate'. |
|
O servidor proxy HTTP requer o esquema de autenticação HTTP 'NTLM'. |
|
O ponto de extremidade remoto requer o esquema de autenticação HTTP 'básico'. |
|
O ponto de extremidade remoto requer o esquema de autenticação HTTP 'digest'. |
|
O ponto de extremidade remoto requer o esquema de autenticação HTTP 'negotiate'. |
|
O ponto de extremidade remoto requer o esquema de autenticação HTTP 'NTLM'. |
|
Um certificado necessário não está dentro de seu período de validade ao verificar o relógio do sistema atual ou o carimbo de data/hora no arquivo assinado. |
|
O nome CN dos certificados não corresponde ao valor passado. |
|
Uma cadeia de certificados processada, mas encerrada em um certificado raiz que não é confiável pelo provedor de confiança. |
|
O certificado não é válido para o uso solicitado. |
|
A função de revogação não pôde verificar a revogação porque o servidor de revogação estava offline. |
|
Ficou sem memória. |
|
Um ou mais argumentos são inválidos. |
|
Essa função pode retornar outros erros não listados acima. |
Comentários
Essa função usa metadados sobre os tipos de mensagem esperados para desserializar o corpo.
Os metadados são uma matriz de ponteiros para WS_MESSAGE_DESCRIPTIONs.
Cada descrição da mensagem contém um valor de ação, que é usado para corresponder à ação da mensagem e um WS_ELEMENT_DESCRIPTION que fornece os metadados para o elemento body.
Quando os cabeçalhos de mensagem forem recebidos, a função examinará a matriz para encontrar uma correspondência com a ação. A primeira descrição da mensagem que corresponde é usada para desserializar o corpo e o índice baseado em zero dessa descrição de mensagem na matriz é retornado no parâmetro index out. Se a função for bem-sucedida, o parâmetro index out sempre será definido para indicar qual descrição da mensagem foi usada.
Para que uma descrição da mensagem corresponda, o valor da ação deve corresponder exatamente ao da mensagem. Se a ação no WS_MESSAGE_DESCRIPTION for NULL, a ação sempre corresponderá. Isso pode ser usado no caso em que não há nenhum cabeçalho de ação na mensagem recebida ou se o corpo é sempre o mesmo, independentemente de qual seja a ação.
Se o corpo estiver vazio, o campo bodyElementDescription do WS_MESSAGE_DESCRIPTION poderá ser NULL.
Se bodyElementDescription não for NULL, essa função desserializará o corpo, conforme descrito em WsReadBody.
Depois que uma mensagem for recebida, seus cabeçalhos poderão ser inspecionados usando WsGetHeader ou WsGetCustomHeader.
Requisitos
Cliente mínimo com suporte | Windows 7 [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | webservices.h |
Biblioteca | WebServices.lib |
DLL | WebServices.dll |