Compartilhar via


Função WsRequestReply (webservices.h)

Usado para enviar uma mensagem de solicitação e receber uma mensagem de resposta correlacionada.

Sintaxe

HRESULT WsRequestReply(
  [in]           WS_CHANNEL                   *channel,
  [in]           WS_MESSAGE                   *requestMessage,
  [in]           const WS_MESSAGE_DESCRIPTION *requestMessageDescription,
  [in]           WS_WRITE_OPTION              writeOption,
                 const void                   *requestBodyValue,
  [in]           ULONG                        requestBodyValueSize,
  [in]           WS_MESSAGE                   *replyMessage,
  [in]           const WS_MESSAGE_DESCRIPTION *replyMessageDescription,
  [in]           WS_READ_OPTION               readOption,
  [in, optional] WS_HEAP                      *heap,
                 void                         *value,
  [in]           ULONG                        valueSize,
  [in, optional] const WS_ASYNC_CONTEXT       *asyncContext,
  [in, optional] WS_ERROR                     *error
);

Parâmetros

[in] channel

O canal no qual realizar a operação de solicitação-resposta.

[in] requestMessage

O objeto de mensagem a ser usado para enviar a solicitação.

O objeto de mensagem deve estar em WS_MESSAGE_STATE_EMPTY ou WS_MESSAGE_STATE_INITIALIZED.

[in] requestMessageDescription

O campo de ação do WS_MESSAGE_DESCRIPTION é usado como o cabeçalho de ação para a mensagem de solicitação. Esse campo poderá ser NULL se nenhuma ação for necessária.

O campo bodyElementDescription do WS_MESSAGE_DESCRIPTION é usado para serializar o corpo da mensagem de solicitação. Esse campo poderá ser NULL se nenhum elemento de corpo for desejado. Consulte WsWriteBody para obter informações sobre como o corpo é serializado de acordo com bodyElementDescription.

[in] writeOption

Se o elemento body é necessário e como o valor é alocado. Consulte WS_WRITE_OPTION para obter mais informações.

requestBodyValue

Um ponteiro para o valor a ser serializado no corpo do objeto de solicitação.

[in] requestBodyValueSize

O tamanho do valor da solicitação que está sendo serializado, em bytes.

[in] replyMessage

O objeto de mensagem a ser usado para receber a resposta.

O objeto de mensagem deve estar em WS_MESSAGE_STATE_EMPTY.

[in] replyMessageDescription

O campo de ação do WS_MESSAGE_DESCRIPTION é usado para verificar o cabeçalho de ação da mensagem de resposta recebida. Esse campo poderá ser NULL se nenhuma ação for necessária. Se FOR NULL, o cabeçalho de ação da mensagem recebida será ignorado se presente.

O campo bodyElementDescription do WS_MESSAGE_DESCRIPTION é usado para desserializar o corpo da mensagem de resposta. Esse campo poderá ser NULL se nenhum elemento de corpo for desejado. Consulte WsReadBody para obter informações sobre como o corpo é desserializado de acordo com o bodyElementDescription.

[in] readOption

Se o elemento do corpo da resposta é necessário e como alocar o valor. Para obter mais informações, consulte WS_READ_OPTION e WsReadBody.

[in, optional] heap

O heap usado para alocar valores desserializados do corpo da resposta. Se o heap não for necessário para o tipo fornecido, esse parâmetro poderá ser NULL.

value

Onde armazenar os valores desserializados do corpo.

A interpretação desse parâmetro depende do WS_READ_OPTION.

Se o bodyElementDescription do WS_MESSAGE_DESCRIPTION de resposta 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.

[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
WS_E_ENDPOINT_FAULT_RECEIVED
A mensagem de resposta continha uma falha. A falha pode ser extraída do WS_ERROR usando WsGetErrorProperty.
WS_S_ASYNC
A operação assíncrona ainda está pendente.
WS_E_OPERATION_ABORTED
A operação foi anulada.
WS_E_INVALID_OPERATION
A operação não é permitida devido ao estado atual do objeto.
WS_E_ENDPOINT_NOT_FOUND
O ponto de extremidade remoto não existe ou não pôde ser localizado.
WS_E_ENDPOINT_ACCESS_DENIED
O acesso foi negado pelo ponto de extremidade remoto.
WS_E_ENDPOINT_DISCONNECTED
A conexão com o ponto de extremidade remoto foi encerrada.
WS_E_ENDPOINT_FAILURE
O ponto de extremidade remoto não pôde processar a solicitação.
WS_E_ENDPOINT_NOT_AVAILABLE
O ponto de extremidade remoto não está atualmente em serviço neste local.
WS_E_ENDPOINT_TOO_BUSY
O ponto de extremidade remoto não pode processar a solicitação devido à sobrecarga.
WS_E_ENDPOINT_UNREACHABLE
O ponto de extremidade remoto não estava acessível.
WS_E_INVALID_ENDPOINT_URL
A URL do endereço do ponto de extremidade é inválida.
WS_E_INVALID_FORMAT
Os dados de entrada não estavam no formato esperado ou não tinham o valor esperado.
WS_E_OPERATION_TIMED_OUT
A operação não foi concluída dentro do tempo alocado.
WS_E_PROXY_ACCESS_DENIED
O acesso foi negado pelo servidor proxy HTTP.
WS_E_PROXY_FAILURE
O servidor proxy HTTP não pôde processar a solicitação.
WS_E_QUOTA_EXCEEDED
Uma cota foi excedida.
WS_E_SECURITY_VERIFICATION_FAILURE
A verificação de segurança não foi bem-sucedida para os dados recebidos.
WS_E_SECURITY_SYSTEM_FAILURE
Falha em uma operação de segurança na estrutura dos Serviços Web do Windows.
WS_E_SECURITY_TOKEN_EXPIRED
Um token de segurança foi rejeitado pelo servidor porque expirou.
WS_E_PROXY_REQUIRES_BASIC_AUTH
O servidor proxy HTTP requer o esquema de autenticação HTTP 'basic'.
WS_E_PROXY_REQUIRES_DIGEST_AUTH
O servidor proxy HTTP requer o esquema de autenticação HTTP 'digest'.
WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH
O servidor proxy HTTP requer o esquema de autenticação HTTP 'negotiate'.
WS_E_PROXY_REQUIRES_NTLM_AUTH
O servidor proxy HTTP requer o esquema de autenticação HTTP 'NTLM'.
WS_E_SERVER_REQUIRES_BASIC_AUTH
O ponto de extremidade remoto requer o esquema de autenticação HTTP 'básico'.
WS_E_SERVER_REQUIRES_DIGEST_AUTH
O ponto de extremidade remoto requer o esquema de autenticação HTTP 'digest'.
WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH
O ponto de extremidade remoto requer o esquema de autenticação HTTP 'negotiate'.
WS_E_SERVER_REQUIRES_NTLM_AUTH
O ponto de extremidade remoto requer o esquema de autenticação HTTP 'NTLM'.
CERT_E_EXPIRED
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.
CERT_E_CN_NO_MATCH
O nome CN dos certificados não corresponde ao valor passado.
CERT_E_UNTRUSTEDROOT
Uma cadeia de certificados processada, mas encerrada em um certificado raiz que não é confiável pelo provedor de confiança.
CERT_E_WRONG_USAGE
O certificado não é válido para o uso solicitado.
CRYPT_E_REVOCATION_OFFLINE
A função de revogação não pôde verificar a revogação porque o servidor de revogação estava offline.
E_OUTOFMEMORY
Ficou sem memória.
E_INVALIDARG
Um ou mais argumentos são inválidos.
Outros erros
Essa função pode retornar outros erros não listados acima.

Comentários

As mensagens são correlacionadas conforme apropriado para o WS_ADDRESSING_VERSION. Consulte Visão geral da camada de canal para obter mais informações sobre como correlacionar mensagens de resposta de solicitação.

Requisitos

Requisito Valor
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