Funzione WsReceiveMessage (webservices.h)
Ricevere un messaggio e deserializzare il corpo del messaggio come valore.
Sintassi
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
);
Parametri
[in] channel
Canale da cui ricevere.
[in] message
Oggetto messaggio utilizzato per la ricezione.
Il messaggio deve essere nello stato WS_MESSAGE_STATE_EMPTY .
messageDescriptions
Matrice di puntatori alle descrizioni dei messaggi che specifica i metadati per i tipi di messaggi previsti.
[in] messageDescriptionCount
Numero di elementi nella matrice messageDescriptions.
[in] receiveOption
Indica se il messaggio è obbligatorio. Per altre informazioni, vedere WS_RECEIVE_OPTION .
[in] readBodyOption
Indica se l'elemento body è obbligatorio e come allocare il valore.
Per altre informazioni, vedere WS_READ_OPTION .
[in, optional] heap
Heap in cui archiviare i valori deserializzati. Se l'heap non è necessario per il tipo specificato, questo parametro può essere NULL.
value
L'interpretazione di questo parametro dipende dalla WS_READ_OPTION.
Se WS_RECEIVE_OPTIONAL_MESSAGE viene specificato per il parametro receiveOption e non sono disponibili altri messaggi nel canale, questo parametro non viene toccato. In questo caso, la funzione restituisce WS_S_END. Vedere Valori restituiti di Servizi Web Windows.
Se bodyElementDescription del WS_MESSAGE_DESCRIPTION corrispondente è NULL, questo parametro non viene toccato. In questo caso, non è necessario specificare il parametro .
[in] valueSize
L'interpretazione di questo parametro dipende dalla WS_READ_OPTION.
index
Se WS_RECEIVE_OPTIONAL_MESSAGE viene specificato per il parametro receiveOption e non sono disponibili altri messaggi nel canale, questo parametro non viene modificato. In questo caso, la funzione restituirà WS_S_END.
In caso contrario, se la funzione ha esito positivo, questo conterrà l'indice in base zero nella matrice di descrizioni dei messaggi che indicano quale corrisponde.
Questo parametro può essere NULL se il chiamante non è interessato al valore , ad esempio se è presente una sola descrizione del messaggio.
[in, optional] asyncContext
Informazioni su come richiamare la funzione in modo asincrono o NULL se si richiama in modo sincrono.
[in, optional] error
Specifica dove archiviare informazioni aggiuntive sull'errore se la funzione ha esito negativo.
Valore restituito
Questa funzione può restituire uno di questi valori.
Codice restituito | Descrizione |
---|---|
|
L'operazione asincrona è ancora in sospeso. |
|
È stata specificata l'opzione di ricezione WS_RECEIVE_OPTIONAL_MESSAGE e non sono disponibili altri messaggi per il canale. |
|
Il messaggio ricevuto contiene un errore. L'errore può essere estratto dal WS_ERROR usando WsGetErrorProperty. |
|
L'operazione è stata interrotta. |
|
L'operazione non è consentita a causa dello stato corrente dell'oggetto . |
|
L'endpoint remoto non esiste o non è stato possibile individuarsi. |
|
L'accesso è stato negato dall'endpoint remoto. |
|
La connessione con l'endpoint remoto è stata terminata. |
|
L'endpoint remoto non è riuscito a elaborare la richiesta. |
|
L'endpoint remoto non è attualmente in servizio in questa posizione. |
|
L'endpoint remoto non è in grado di elaborare la richiesta a causa dell'overload. |
|
L'endpoint remoto non è raggiungibile. |
|
L'URL dell'indirizzo dell'endpoint non è valido. |
|
I dati di input non erano nel formato previsto o non hanno il valore previsto. |
|
L'operazione non è stata completata entro il tempo assegnato. |
|
Accesso negato dal server proxy HTTP. |
|
Il server proxy HTTP non è riuscito a elaborare la richiesta. |
|
È stata superata una quota. |
|
La verifica di sicurezza non è riuscita per i dati ricevuti. |
|
Un'operazione di sicurezza non è riuscita nel framework di Servizi Web Windows. |
|
Un token di sicurezza è stato rifiutato dal server perché è scaduto. |
|
Il server proxy HTTP richiede lo schema di autenticazione HTTP "basic". |
|
Il server proxy HTTP richiede lo schema di autenticazione HTTP "digest". |
|
Il server proxy HTTP richiede lo schema di autenticazione HTTP 'negotiate'. |
|
Il server proxy HTTP richiede lo schema di autenticazione HTTP 'NTLM'. |
|
L'endpoint remoto richiede lo schema di autenticazione HTTP 'basic'. |
|
L'endpoint remoto richiede lo schema di autenticazione HTTP "digest". |
|
L'endpoint remoto richiede lo schema di autenticazione HTTP 'negotiate'. |
|
L'endpoint remoto richiede lo schema di autenticazione HTTP 'NTLM'. |
|
Un certificato obbligatorio non rientra nel periodo di validità durante la verifica rispetto all'orologio di sistema corrente o al timestamp nel file firmato. |
|
Il nome CN dei certificati non corrisponde al valore passato. |
|
Catena di certificati elaborata, ma terminata in un certificato radice che non è considerato attendibile dal provider di attendibilità. |
|
Il certificato non è valido per l'utilizzo richiesto. |
|
La funzione di revoca non è in grado di completare il controllo di revoca perché il server di revoca è offline. |
|
Memoria insufficiente. |
|
Uno o più argomenti non sono validi. |
|
Questa funzione può restituire altri errori non elencati sopra. |
Commenti
Questa funzione usa i metadati sui tipi di messaggi previsti per deserializzare il corpo.
I metadati sono una matrice di puntatori a WS_MESSAGE_DESCRIPTIONs.
Ogni descrizione del messaggio contiene un valore di azione, utilizzato per corrispondere all'azione del messaggio e un WS_ELEMENT_DESCRIPTION che fornisce i metadati per l'elemento corpo.
Quando sono state ricevute le intestazioni del messaggio, la funzione analizzerà la matrice per trovare una corrispondenza rispetto all'azione. La prima descrizione del messaggio che corrisponde viene usata per deserializzare il corpo e l'indice in base zero di questa descrizione del messaggio nella matrice viene restituito nel parametro index out. Se la funzione ha esito positivo, il parametro index out verrà sempre impostato per indicare quale descrizione del messaggio è stata usata.
Affinché una descrizione del messaggio corrisponda, il valore dell'azione deve corrispondere esattamente a quello del messaggio. Se l'azione nella WS_MESSAGE_DESCRIPTION è NULL, l'azione corrisponde sempre. Ciò può essere usato nel caso in cui non vi sia alcuna intestazione di azione nel messaggio ricevuto o se il corpo è sempre lo stesso indipendentemente dall'azione.
Se il corpo deve essere vuoto, il campo bodyElementDescription del WS_MESSAGE_DESCRIPTION potrebbe essere NULL.
Se bodyElementDescription non è NULL, questa funzione deserializza il corpo come descritto in WsReadBody.
Dopo aver ricevuto un messaggio, è possibile esaminare le relative intestazioni usando WsGetHeader o WsGetCustomHeader.
Requisiti
Client minimo supportato | Windows 7 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 R2 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | webservices.h |
Libreria | WebServices.lib |
DLL | WebServices.dll |