WsReceiveMessage-Funktion (webservices.h)
Empfangen Sie eine Nachricht, und deserialisieren Sie den Text der Nachricht als Wert.
Syntax
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
);
Parameter
[in] channel
Der Kanal, von dem empfangen werden soll.
[in] message
Das Nachrichtenobjekt, das zum Empfangen verwendet wird.
Die Nachricht sollte sich in WS_MESSAGE_STATE_EMPTY Zustand befinden.
messageDescriptions
Ein Array von Zeigern auf Nachrichtenbeschreibungen, das die Metadaten für die erwarteten Nachrichtentypen angibt.
[in] messageDescriptionCount
Die Anzahl der Elemente im MessageDescriptions-Array.
[in] receiveOption
Gibt an, ob die Nachricht erforderlich ist. Weitere Informationen finden Sie unter WS_RECEIVE_OPTION .
[in] readBodyOption
Gibt an, ob das body-Element erforderlich ist und wie der Wert zugeordnet werden soll.
Weitere Informationen finden Sie unter WS_READ_OPTION .
[in, optional] heap
Der Heap, in dem die deserialisierten Werte gespeichert werden sollen. Wenn der Heap für den angegebenen Typ nicht erforderlich ist, kann dieser Parameter NULL sein.
value
Die Interpretation dieses Parameters hängt vom WS_READ_OPTION ab.
Wenn WS_RECEIVE_OPTIONAL_MESSAGE für den receiveOption-Parameter angegeben ist und keine weiteren Nachrichten auf dem Kanal verfügbar sind, wird dieser Parameter nicht berührt. In diesem Fall gibt die Funktion WS_S_END zurück. (Siehe Rückgabewerte für Windows-Webdienste.)
Wenn die bodyElementDescription des übereinstimmenden WS_MESSAGE_DESCRIPTIONNULL ist, wird dieser Parameter nicht berührt. In diesem Fall muss der Parameter nicht angegeben werden.
[in] valueSize
Die Interpretation dieses Parameters hängt vom WS_READ_OPTION ab.
index
Wenn WS_RECEIVE_OPTIONAL_MESSAGE für den receiveOption-Parameter angegeben ist und keine weiteren Nachrichten im Kanal verfügbar sind, bleibt dieser Parameter unberührt. In diesem Fall gibt die Funktion WS_S_END zurück.
Andernfalls enthält die Funktion, wenn die Funktion erfolgreich ist, den nullbasierten Index in das Array der Nachrichtenbeschreibungen, die angibt, welche zugeordnet ist.
Dieser Parameter kann NULL sein, wenn der Aufrufer nicht an dem Wert interessiert ist (z. B. wenn nur eine Nachrichtenbeschreibung vorhanden ist).
[in, optional] asyncContext
Informationen zum asynchronen Aufrufen der Funktion oder NULL beim synchronen Aufrufen.
[in, optional] error
Gibt an, wo zusätzliche Fehlerinformationen gespeichert werden sollen, wenn die Funktion fehlschlägt.
Rückgabewert
Diese Funktion kann einen dieser Werte zurückgeben.
Rückgabecode | Beschreibung |
---|---|
|
Der asynchrone Vorgang steht noch aus. |
|
Die Empfangsoption WS_RECEIVE_OPTIONAL_MESSAGE wurde angegeben, und es sind keine weiteren Nachrichten für den Kanal verfügbar. |
|
Die empfangene Nachricht enthielt einen Fehler. Der Fehler kann mithilfe von WsGetErrorProperty aus dem WS_ERROR extrahiert werden. |
|
Der Vorgang wurde abgebrochen. |
|
Der Vorgang ist aufgrund des aktuellen Zustands des Objekts nicht zulässig. |
|
Der Remoteendpunkt ist nicht vorhanden oder konnte nicht gefunden werden. |
|
Der Zugriff wurde vom Remoteendpunkt verweigert. |
|
Die Verbindung mit dem Remoteendpunkt wurde beendet. |
|
Der Remoteendpunkt konnte die Anforderung nicht verarbeiten. |
|
Der Remoteendpunkt ist an diesem Standort derzeit nicht im Dienst. |
|
Der Remoteendpunkt kann die Anforderung aufgrund einer Überlastung nicht verarbeiten. |
|
Der Remoteendpunkt war nicht erreichbar. |
|
Die Endpunktadressen-URL ist ungültig. |
|
Die Eingabedaten waren nicht im erwarteten Format oder hatten nicht den erwarteten Wert. |
|
Der Vorgang wurde nicht innerhalb der zugewiesenen Zeit abgeschlossen. |
|
Der Zugriff wurde vom HTTP-Proxyserver verweigert. |
|
Der HTTP-Proxyserver konnte die Anforderung nicht verarbeiten. |
|
Ein Kontingent wurde überschritten. |
|
Die Sicherheitsüberprüfung war für die empfangenen Daten nicht erfolgreich. |
|
Fehler bei einem Sicherheitsvorgang im Windows-Webdienstframework. |
|
Ein Sicherheitstoken wurde vom Server abgelehnt, da es abgelaufen ist. |
|
Der HTTP-Proxyserver erfordert das HTTP-Authentifizierungsschema "basic". |
|
Der HTTP-Proxyserver erfordert das HTTP-Authentifizierungsschema "digest". |
|
Für den HTTP-Proxyserver ist das HTTP-Authentifizierungsschema "negotiate" erforderlich. |
|
Der HTTP-Proxyserver erfordert das HTTP-Authentifizierungsschema "NTLM". |
|
Für den Remoteendpunkt ist das HTTP-Authentifizierungsschema "basic" erforderlich. |
|
Für den Remoteendpunkt ist das HTTP-Authentifizierungsschema "digest" erforderlich. |
|
Für den Remoteendpunkt ist das HTTP-Authentifizierungsschema "negotiate" erforderlich. |
|
Für den Remoteendpunkt ist das HTTP-Authentifizierungsschema "NTLM" erforderlich. |
|
Ein erforderliches Zertifikat liegt nicht innerhalb seines Gültigkeitszeitraums, wenn es mit der aktuellen Systemuhr oder dem Zeitstempel in der signierten Datei überprüft wird. |
|
Der Zertifikat-CN-Name stimmt nicht mit dem übergebenen Wert überein. |
|
Eine Zertifikatkette, die verarbeitet, aber in einem Stammzertifikat beendet wird, das vom Vertrauensanbieter nicht vertrauenswürdig ist. |
|
Das Zertifikat ist für die angeforderte Verwendung nicht zulässig. |
|
Die Sperrfunktion konnte die Sperrung nicht überprüfen, da der Sperrserver offline war. |
|
Der Arbeitsspeicher ist nicht mehr vorhanden. |
|
Mindestens ein Argument ist ungültig. |
|
Diese Funktion gibt möglicherweise andere Fehler zurück, die oben nicht aufgeführt sind. |
Hinweise
Diese Funktion verwendet Metadaten zu den erwarteten Nachrichtentypen, um den Text zu deserialisieren.
Die Metadaten sind ein Array von Zeigern auf WS_MESSAGE_DESCRIPTIONs.
Jede Nachrichtenbeschreibung enthält einen Aktionswert, der verwendet wird, um mit der Aktion der Nachricht abzugleichen, und eine WS_ELEMENT_DESCRIPTION , die die Metadaten für das Body-Element bereitstellt.
Wenn die Nachrichtenheader empfangen wurden, scannt die Funktion das Array, um eine Übereinstimmung mit der Aktion zu finden. Die erste Übereinstimmende Nachrichtenbeschreibung wird verwendet, um den Text zu deserialisieren, und der nullbasierte Index dieser Nachrichtenbeschreibung im Array wird im Index out-Parameter zurückgegeben. Wenn die Funktion erfolgreich ist, wird der Index out-Parameter immer so festgelegt, dass er angibt, welche Nachrichtenbeschreibung verwendet wurde.
Damit eine Nachrichtenbeschreibung übereinstimmt, muss der Aktionswert genau mit dem wert der Nachricht übereinstimmen. Wenn die Aktion im WS_MESSAGE_DESCRIPTIONNULL ist, stimmt die Aktion immer überein. Dies kann verwendet werden, wenn in der empfangenen Nachricht kein Aktionsheader vorhanden ist oder wenn der Text immer gleich ist, unabhängig davon, was die Aktion ist.
Wenn erwartet wird, dass der Text leer ist, kann das bodyElementDescription-Feld des WS_MESSAGE_DESCRIPTIONNULL sein.
Wenn bodyElementDescription nicht NULL ist, deserialisiert diese Funktion den Text wie in WsReadBody beschrieben.
Nachdem eine Nachricht empfangen wurde, können ihre Header mit WsGetHeader oder WsGetCustomHeader überprüft werden.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 7 [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | webservices.h |
Bibliothek | WebServices.lib |
DLL | WebServices.dll |