Поделиться через


Функция WsRequestReply (webservices.h)

Используется для отправки сообщения запроса и получения коррелированного ответного сообщения.

Синтаксис

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
);

Параметры

[in] channel

Канал для выполнения операции "запрос—ответ".

[in] requestMessage

Объект сообщения, используемый для отправки запроса.

Объект message должен находиться в WS_MESSAGE_STATE_EMPTY или WS_MESSAGE_STATE_INITIALIZED.

[in] requestMessageDescription

Поле действия WS_MESSAGE_DESCRIPTION используется в качестве заголовка действия для сообщения запроса. Это поле может иметь значение NULL , если никаких действий не требуется.

Поле bodyElementDescription WS_MESSAGE_DESCRIPTION используется для сериализации текста сообщения запроса. Это поле может иметь значение NULL , если элемент body не является требуемым. Сведения о сериализации тела в соответствии с bodyElementDescription см. в разделе WsWriteBody .

[in] writeOption

Является ли элемент body обязательным и как выделяется значение. Дополнительные сведения см. в разделе WS_WRITE_OPTION .

requestBodyValue

Указатель на значение для сериализации в теле объекта запроса.

[in] requestBodyValueSize

Размер сериализуемого значения запроса в байтах.

[in] replyMessage

Объект сообщения, используемый для получения ответа.

Объект message должен находиться в WS_MESSAGE_STATE_EMPTY.

[in] replyMessageDescription

Поле действия WS_MESSAGE_DESCRIPTION используется для проверки заголовка действия полученного ответного сообщения. Это поле может иметь значение NULL , если никаких действий не требуется. Если значение РАВНО NULL, заголовок действия полученного сообщения игнорируется при его наличии.

Поле bodyElementDescription WS_MESSAGE_DESCRIPTION используется для десериализации текста ответного сообщения. Это поле может иметь значение NULL , если элемент body не является требуемым. Сведения о десериализации тела в соответствии с bodyElementDescription см. в разделе WsReadBody .

[in] readOption

Требуется ли элемент текста ответа и как выделить значение. Дополнительные сведения см. в разделах WS_READ_OPTION и WsReadBody.

[in, optional] heap

Куча, используемая для выделения десериализованных значений текста ответа. Если куча не требуется для заданного типа, этот параметр может иметь значение NULL.

value

Место хранения десериализованных значений текста.

Интерпретация этого параметра зависит от WS_READ_OPTION.

Если bodyElementDescription WS_MESSAGE_DESCRIPTION ответа имеет значение NULL, этот параметр не касается. В этом случае указывать параметр не нужно.

[in] valueSize

Интерпретация этого параметра зависит от WS_READ_OPTION.

[in, optional] asyncContext

Сведения об асинхронном вызове функции или значении NULL при синхронном вызове.

[in, optional] error

Указывает, где должны храниться дополнительные сведения об ошибке в случае сбоя функции.

Возвращаемое значение

Эта функция может возвращать одно из этих значений.

Код возврата Описание
WS_E_ENDPOINT_FAULT_RECEIVED
Ответное сообщение содержит ошибку. Ошибку можно извлечь из WS_ERROR с помощью WsGetErrorProperty.
WS_S_ASYNC
Асинхронная операция по-прежнему находится в состоянии ожидания.
WS_E_OPERATION_ABORTED
Операция была прервана.
WS_E_INVALID_OPERATION
Операция не разрешена из-за текущего состояния объекта .
WS_E_ENDPOINT_NOT_FOUND
Удаленная конечная точка не существует или не может быть найдена.
WS_E_ENDPOINT_ACCESS_DENIED
Удаленная конечная точка запретила доступ.
WS_E_ENDPOINT_DISCONNECTED
Подключение к удаленной конечной точке было прервано.
WS_E_ENDPOINT_FAILURE
Удаленной конечной точке не удалось обработать запрос.
WS_E_ENDPOINT_NOT_AVAILABLE
Удаленная конечная точка в настоящее время не обслуживается в этом расположении.
WS_E_ENDPOINT_TOO_BUSY
Удаленная конечная точка не может обработать запрос из-за перегрузки.
WS_E_ENDPOINT_UNREACHABLE
Удаленная конечная точка недоступна.
WS_E_INVALID_ENDPOINT_URL
Недопустимый URL-адрес конечной точки.
WS_E_INVALID_FORMAT
Входные данные не были в ожидаемом формате или не имели ожидаемого значения.
WS_E_OPERATION_TIMED_OUT
Операция не была завершена в отведенное время.
WS_E_PROXY_ACCESS_DENIED
Прокси-сервер HTTP отказал в доступе.
WS_E_PROXY_FAILURE
Прокси-серверу HTTP не удалось обработать запрос.
WS_E_QUOTA_EXCEEDED
Превышена квота.
WS_E_SECURITY_VERIFICATION_FAILURE
Проверка безопасности не прошла успешно для полученных данных.
WS_E_SECURITY_SYSTEM_FAILURE
Сбой операции безопасности в платформе веб-служб Windows.
WS_E_SECURITY_TOKEN_EXPIRED
Маркер безопасности был отклонен сервером, так как срок его действия истек.
WS_E_PROXY_REQUIRES_BASIC_AUTH
Для прокси-сервера HTTP требуется базовая схема проверки подлинности HTTP.
WS_E_PROXY_REQUIRES_DIGEST_AUTH
Для прокси-сервера HTTP требуется схема проверки подлинности HTTP "digest".
WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH
Для прокси-сервера HTTP требуется схема проверки подлинности HTTP negotiate.
WS_E_PROXY_REQUIRES_NTLM_AUTH
Для прокси-сервера HTTP требуется схема проверки подлинности HTTP NTLM.
WS_E_SERVER_REQUIRES_BASIC_AUTH
Для удаленной конечной точки требуется базовая схема проверки подлинности HTTP.
WS_E_SERVER_REQUIRES_DIGEST_AUTH
Для удаленной конечной точки требуется схема проверки подлинности HTTP "digest".
WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH
Для удаленной конечной точки требуется схема проверки подлинности HTTP negotiate.
WS_E_SERVER_REQUIRES_NTLM_AUTH
Для удаленной конечной точки требуется схема проверки подлинности HTTP NTLM.
CERT_E_EXPIRED
При проверке на соответствие текущим системным часам или метке времени в подписанном файле обязательный сертификат не является сроком действия.
CERT_E_CN_NO_MATCH
Имя cn certificates не соответствует переданное значение.
CERT_E_UNTRUSTEDROOT
Цепочка сертификатов обрабатывается, но завершается в корневом сертификате, который не является доверенным поставщиком доверия.
CERT_E_WRONG_USAGE
Сертификат не действителен для запрошенного применения.
CRYPT_E_REVOCATION_OFFLINE
Функция отзыва не смогла проверить отзыв, потому что сервер отзыва был отключен.
E_OUTOFMEMORY
Не хватает памяти.
E_INVALIDARG
Один или несколько аргументов являются недопустимыми.
Другие ошибки
Эта функция может возвращать другие ошибки, не перечисленные выше.

Комментарии

Сообщения сопоставляются соответствующим образом с WS_ADDRESSING_VERSION. Дополнительные сведения о сопоставлении сообщений ответа на запросы см. в разделе Общие сведения об уровне канала.

Требования

Требование Значение
Минимальная версия клиента Windows 7 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header webservices.h
Библиотека WebServices.lib
DLL WebServices.dll