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

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

Синтаксис

HRESULT WsReadMessageStart(
  [in]           WS_CHANNEL             *channel,
  [in]           WS_MESSAGE             *message,
  [in, optional] const WS_ASYNC_CONTEXT *asyncContext,
  [in, optional] WS_ERROR               *error
);

Параметры

[in] channel

Канал для получения.

[in] message

Сообщение для получения.

[in, optional] asyncContext

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

[in, optional] error

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

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

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

Код возврата Описание
S_OK
Начало сообщения получено успешно.
WS_S_END
На канале больше нет доступных сообщений.
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
Один или несколько аргументов являются недопустимыми.
Другие ошибки
Эта функция может возвращать другие ошибки, не перечисленные выше.

Комментарии

Он считывает начало следующего сообщения из канала, включая заголовки сообщения.

Эта функция похожа на WsReadEnvelopeStart , но используется с каналами.

После успешного выполнения заголовки будут храниться в сообщении и могут быть доступны случайным образом (например, с помощью WsGetHeader).

Сообщение должно находиться в WS_MESSAGE_STATE_EMPTY состоянии. После успешного выполнения сообщение перейдет в состояние WS_MESSAGE_STATE_READING .

Для десериализации элемента текста сообщения используйте WsReadBody. Чтобы прочитать сообщение непосредственно из средства чтения XML, сначала получите средство чтения с помощью свойства WS_MESSAGE_PROPERTY_BODY_READER .

Если входные данные канала передаются потоковой передачей (WS_STREAMED_INPUT_TRANSFER_MODE), необходимо вызвать WsFillBody , чтобы получить следующую часть основного текста перед фактическим считыванием.

Требования

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