WsRequestReply-Funktion (webservices.h)

Wird verwendet, um eine Anforderungsnachricht zu senden und eine korrelierte Antwortnachricht zu empfangen.

Syntax

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

Parameter

[in] channel

Der Kanal, auf dem der Anforderungs-Antwort-Vorgang ausgeführt werden soll.

[in] requestMessage

Das Nachrichtenobjekt, das zum Senden der Anforderung verwendet werden soll.

Das Nachrichtenobjekt sollte sich in WS_MESSAGE_STATE_EMPTY oder WS_MESSAGE_STATE_INITIALIZED.

[in] requestMessageDescription

Das Aktionsfeld des WS_MESSAGE_DESCRIPTION wird als Aktionsheader für die Anforderungsnachricht verwendet. Dieses Feld kann NULL sein, wenn keine Aktion erforderlich ist.

Das BodyElementDescription-Feld des WS_MESSAGE_DESCRIPTION wird verwendet, um den Text der Anforderungsnachricht zu serialisieren. Dieses Feld kann NULL sein, wenn kein Textelement gewünscht wird. Informationen dazu, wie der Text gemäß bodyElementDescription serialisiert wird, finden Sie unter WsWriteBody .

[in] writeOption

Gibt an, ob das Body-Element erforderlich ist und wie der Wert zugeordnet wird. Weitere Informationen finden Sie unter WS_WRITE_OPTION .

requestBodyValue

Ein Zeiger auf den Wert, der im Text des Anforderungsobjekts serialisiert werden soll.

[in] requestBodyValueSize

Die Größe des Anforderungswerts, der serialisiert wird, in Bytes.

[in] replyMessage

Das Nachrichtenobjekt, das zum Empfangen der Antwort verwendet werden soll.

Das Nachrichtenobjekt sollte sich in WS_MESSAGE_STATE_EMPTY.

[in] replyMessageDescription

Das Aktionsfeld des WS_MESSAGE_DESCRIPTION wird verwendet, um den Aktionsheader der empfangenen Antwortnachricht zu überprüfen. Dieses Feld kann NULL sein, wenn keine Aktion erforderlich ist. Wenn NULL, wird der Aktionsheader der empfangenen Nachricht ignoriert, sofern vorhanden.

Das BodyElementDescription-Feld der WS_MESSAGE_DESCRIPTION wird verwendet, um den Text der Antwortnachricht zu deserialisieren. Dieses Feld kann NULL sein, wenn kein Textelement gewünscht wird. Informationen dazu, wie der Text gemäß bodyElementDescription deserialisiert wird, finden Sie unter WsReadBody .

[in] readOption

Gibt an, ob das Antworttextelement erforderlich ist und wie der Wert zugeordnet wird. Weitere Informationen finden Sie unter WS_READ_OPTION und WsReadBody.

[in, optional] heap

Der Heap, der zum Zuordnen des deserialisierten Antworttextwertes verwendet wird. Wenn der Heap für den angegebenen Typ nicht erforderlich ist, kann dieser Parameter NULL sein.

value

Wo die deserialisierten Werte des Texts gespeichert werden sollen.

Die Interpretation dieses Parameters hängt vom WS_READ_OPTION ab.

Wenn die bodyElementDescription der Antwort 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.

[in, optional] asyncContext

Informationen zum asynchronen Aufrufen der Funktion oder NULL beim synchronen Aufruf.

[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
WS_E_ENDPOINT_FAULT_RECEIVED
Die Antwortnachricht enthielt einen Fehler. Der Fehler kann mithilfe von WsGetErrorProperty aus dem WS_ERROR extrahiert werden.
WS_S_ASYNC
Der asynchrone Vorgang steht noch aus.
WS_E_OPERATION_ABORTED
Der Vorgang wurde abgebrochen.
WS_E_INVALID_OPERATION
Der Vorgang ist aufgrund des aktuellen Zustands des Objekts nicht zulässig.
WS_E_ENDPOINT_NOT_FOUND
Der Remoteendpunkt ist nicht vorhanden oder konnte nicht gefunden werden.
WS_E_ENDPOINT_ACCESS_DENIED
Der Zugriff wurde vom Remoteendpunkt verweigert.
WS_E_ENDPOINT_DISCONNECTED
Die Verbindung mit dem Remoteendpunkt wurde beendet.
WS_E_ENDPOINT_FAILURE
Der Remoteendpunkt konnte die Anforderung nicht verarbeiten.
WS_E_ENDPOINT_NOT_AVAILABLE
Der Remoteendpunkt ist an diesem Standort derzeit nicht im Dienst.
WS_E_ENDPOINT_TOO_BUSY
Der Remoteendpunkt kann die Anforderung aufgrund einer Überlastung nicht verarbeiten.
WS_E_ENDPOINT_UNREACHABLE
Der Remoteendpunkt war nicht erreichbar.
WS_E_INVALID_ENDPOINT_URL
Die Endpunktadressen-URL ist ungültig.
WS_E_INVALID_FORMAT
Die Eingabedaten hatten nicht das erwartete Format oder hatten nicht den erwarteten Wert.
WS_E_OPERATION_TIMED_OUT
Der Vorgang wurde innerhalb der zugewiesenen Zeit nicht abgeschlossen.
WS_E_PROXY_ACCESS_DENIED
Der Zugriff wurde vom HTTP-Proxyserver verweigert.
WS_E_PROXY_FAILURE
Der HTTP-Proxyserver konnte die Anforderung nicht verarbeiten.
WS_E_QUOTA_EXCEEDED
Ein Kontingent wurde überschritten.
WS_E_SECURITY_VERIFICATION_FAILURE
Die Sicherheitsüberprüfung für die empfangenen Daten war nicht erfolgreich.
WS_E_SECURITY_SYSTEM_FAILURE
Ein Sicherheitsvorgang ist im Windows Web Services-Framework fehlgeschlagen.
WS_E_SECURITY_TOKEN_EXPIRED
Ein Sicherheitstoken wurde vom Server abgelehnt, weil es abgelaufen ist.
WS_E_PROXY_REQUIRES_BASIC_AUTH
Der HTTP-Proxyserver erfordert das HTTP-Authentifizierungsschema "basic".
WS_E_PROXY_REQUIRES_DIGEST_AUTH
Der HTTP-Proxyserver erfordert das HTTP-Authentifizierungsschema "digest".
WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH
Der HTTP-Proxyserver erfordert das HTTP-Authentifizierungsschema "negotiate".
WS_E_PROXY_REQUIRES_NTLM_AUTH
Der HTTP-Proxyserver erfordert das HTTP-Authentifizierungsschema "NTLM".
WS_E_SERVER_REQUIRES_BASIC_AUTH
Der Remoteendpunkt erfordert das HTTP-Authentifizierungsschema "basic".
WS_E_SERVER_REQUIRES_DIGEST_AUTH
Der Remoteendpunkt erfordert das HTTP-Authentifizierungsschema "digest".
WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH
Der Remoteendpunkt erfordert das HTTP-Authentifizierungsschema "negotiate".
WS_E_SERVER_REQUIRES_NTLM_AUTH
Der Remoteendpunkt erfordert das HTTP-Authentifizierungsschema "NTLM".
CERT_E_EXPIRED
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.
CERT_E_CN_NO_MATCH
Der Zertifikat-CN-Name stimmt nicht mit dem übergebenen Wert überein.
CERT_E_UNTRUSTEDROOT
Eine Zertifikatkette, die verarbeitet, aber in einem Stammzertifikat beendet wird, dem der Vertrauensanbieter nicht vertraut.
CERT_E_WRONG_USAGE
Das Zertifikat ist für die angeforderte Verwendung nicht zulässig.
CRYPT_E_REVOCATION_OFFLINE
Die Sperrfunktion konnte die Sperrung nicht überprüfen, da der Sperrserver offline war.
E_OUTOFMEMORY
Der Arbeitsspeicher ist nicht mehr vorhanden.
E_INVALIDARG
Mindestens ein Argument ist ungültig.
Andere Fehler
Diese Funktion gibt möglicherweise andere Fehler zurück, die oben nicht aufgeführt sind.

Hinweise

Die Nachrichten werden entsprechend der WS_ADDRESSING_VERSION korreliert. Weitere Informationen zum Korrelieren von Anforderungsantwortnachrichten finden Sie unter Übersicht über die Kanalebene .

Anforderungen

Anforderung Wert
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