Функция WsReceiveMessage (webservices.h)
Получение сообщения и десериализация текста сообщения в качестве значения.
Синтаксис
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
);
Параметры
[in] channel
Канал для получения.
[in] message
Объект сообщения, используемый для получения.
Сообщение должно находиться в WS_MESSAGE_STATE_EMPTY состоянии.
messageDescriptions
Массив указателей на описания сообщений, указывающий метаданные для ожидаемых типов сообщений.
[in] messageDescriptionCount
Количество элементов в массиве messageDescriptions.
[in] receiveOption
Является ли сообщение обязательным. Дополнительные сведения см. в разделе WS_RECEIVE_OPTION .
[in] readBodyOption
Требуется ли элемент body и как выделить значение.
Дополнительные сведения см. в разделе WS_READ_OPTION .
[in, optional] heap
Куча для хранения десериализованных значений. Если куча не требуется для заданного типа, этот параметр может иметь значение NULL.
value
Интерпретация этого параметра зависит от WS_READ_OPTION.
Если для параметра receiveOption указано WS_RECEIVE_OPTIONAL_MESSAGE и больше нет доступных сообщений в канале, этот параметр не касается. В этом случае функция возвращает WS_S_END. (См. раздел Возвращаемые значения веб-служб Windows.)
Если bodyElementDescription совпадающего WS_MESSAGE_DESCRIPTION имеет значение NULL, то этот параметр не касается. В этом случае указывать параметр не нужно.
[in] valueSize
Интерпретация этого параметра зависит от WS_READ_OPTION.
index
Если для параметра receiveOption задано WS_RECEIVE_OPTIONAL_MESSAGE и больше нет доступных сообщений в канале, этот параметр не будет тронут. В этом случае функция вернет WS_S_END.
В противном случае, если функция будет выполнена успешно, она будет содержать отсчитываемый от нуля индекс в массиве описаний сообщений, указывающих, какое из них соответствует.
Этот параметр может иметь значение NULL , если вызывающий объект не заинтересован в значении (например, если имеется только одно описание сообщения).
[in, optional] asyncContext
Сведения об асинхронном вызове функции или значении NULL при синхронном вызове.
[in, optional] error
Указывает, где должны храниться дополнительные сведения об ошибке в случае сбоя функции.
Возвращаемое значение
Эта функция может возвращать одно из этих значений.
Код возврата | Описание |
---|---|
|
Асинхронная операция по-прежнему находится в состоянии ожидания. |
|
Параметр получения WS_RECEIVE_OPTIONAL_MESSAGE указан, и для канала больше нет доступных сообщений. |
|
Полученное сообщение содержит ошибку. Ошибку можно извлечь из WS_ERROR с помощью WsGetErrorProperty. |
|
Операция была прервана. |
|
Операция не разрешена из-за текущего состояния объекта . |
|
Удаленная конечная точка не существует или не может быть найдена. |
|
Удаленная конечная точка запретила доступ. |
|
Подключение к удаленной конечной точке было прервано. |
|
Удаленной конечной точке не удалось обработать запрос. |
|
Удаленная конечная точка в настоящее время не обслуживается в этом расположении. |
|
Удаленная конечная точка не может обработать запрос из-за перегрузки. |
|
Удаленная конечная точка недоступна. |
|
Недопустимый URL-адрес конечной точки. |
|
Входные данные не были в ожидаемом формате или не имели ожидаемого значения. |
|
Операция не была завершена в отведенное время. |
|
Прокси-сервер HTTP отказал в доступе. |
|
Прокси-серверу HTTP не удалось обработать запрос. |
|
Превышена квота. |
|
Проверка безопасности не прошла успешно для полученных данных. |
|
Сбой операции безопасности в платформе веб-служб Windows. |
|
Маркер безопасности был отклонен сервером, так как срок его действия истек. |
|
Для прокси-сервера HTTP требуется базовая схема проверки подлинности HTTP. |
|
Для прокси-сервера HTTP требуется схема проверки подлинности HTTP "digest". |
|
Для прокси-сервера HTTP требуется схема проверки подлинности HTTP negotiate. |
|
Для прокси-сервера HTTP требуется схема проверки подлинности HTTP NTLM. |
|
Для удаленной конечной точки требуется базовая схема проверки подлинности HTTP. |
|
Для удаленной конечной точки требуется схема проверки подлинности HTTP "digest". |
|
Для удаленной конечной точки требуется схема проверки подлинности HTTP negotiate. |
|
Для удаленной конечной точки требуется схема проверки подлинности HTTP NTLM. |
|
При проверке на соответствие текущим системным часам или метке времени в подписанном файле обязательный сертификат не является сроком действия. |
|
Имя cn certificates не соответствует переданное значение. |
|
Цепочка сертификатов обрабатывается, но завершается в корневом сертификате, который не является доверенным поставщиком доверия. |
|
Сертификат не действителен для запрошенного применения. |
|
Функция отзыва не смогла проверить отзыв, потому что сервер отзыва был отключен. |
|
Не хватает памяти. |
|
Один или несколько аргументов недопустимы. |
|
Эта функция может возвращать другие ошибки, не перечисленные выше. |
Комментарии
Эта функция использует метаданные об ожидаемых типах сообщений для десериализации текста.
Метаданные представляют собой массив указателей на WS_MESSAGE_DESCRIPTION.
Каждое описание сообщения содержит значение действия, которое используется для сопоставления с действием сообщения, и WS_ELEMENT_DESCRIPTION , предоставляющий метаданные для элемента body.
После получения заголовков сообщений функция сканирует массив, чтобы найти совпадение с действием. Первое соответствующее описание сообщения используется для десериализации текста, а отсчитываемый от нуля индекс этого описания сообщения в массиве возвращается в параметре index out. Если функция выполнена успешно, всегда будет задан параметр index out, указывающий, какое описание сообщения было использовано.
Чтобы описание сообщения соответствовало, значение действия должно точно соответствовать значению сообщения. Если действие в WS_MESSAGE_DESCRIPTION имеет значение NULL, то действие всегда совпадает. Это можно использовать в случае, если в полученном сообщении нет заголовка действия или если текст всегда один и тот же, независимо от того, какое действие является.
Если ожидается, что текст будет пустым, поле bodyElementDescription WS_MESSAGE_DESCRIPTION может иметь значение NULL.
Если bodyElementDescription не равно NULL, эта функция десериализует тело, как описано в WsReadBody.
После получения сообщения его заголовки можно проверить с помощью WsGetHeader или WsGetCustomHeader.
Требования
Минимальная версия клиента | Windows 7 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 R2 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | webservices.h |
Библиотека | WebServices.lib |
DLL | WebServices.dll |