WsReceiveMessage, fonction (webservices.h)
Recevoir un message et désérialiser le corps du message en tant que valeur.
Syntaxe
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
);
Paramètres
[in] channel
Canal à recevoir.
[in] message
Objet message utilisé pour recevoir.
Le message doit être à l’état WS_MESSAGE_STATE_EMPTY .
messageDescriptions
Tableau de pointeurs vers des descriptions de message qui spécifie les métadonnées pour les types de messages attendus.
[in] messageDescriptionCount
Nombre d’éléments dans le tableau messageDescriptions.
[in] receiveOption
Indique si le message est obligatoire. Pour plus d’informations, consultez WS_RECEIVE_OPTION .
[in] readBodyOption
Indique si l’élément body est requis et comment allouer la valeur.
Pour plus d’informations, consultez WS_READ_OPTION .
[in, optional] heap
Tas dans lequel stocker les valeurs désérialisées. Si le tas n’est pas requis pour le type donné, ce paramètre peut être NULL.
value
L’interprétation de ce paramètre dépend du WS_READ_OPTION.
Si WS_RECEIVE_OPTIONAL_MESSAGE est spécifié pour le paramètre receiveOption et qu’aucun autre message n’est disponible sur le canal, ce paramètre n’est pas touché. Dans ce cas, la fonction retourne WS_S_END. (Voir Valeurs de retour des services Web Windows.)
Si bodyElementDescription de l’WS_MESSAGE_DESCRIPTION correspondant a la valeur NULL, ce paramètre n’est pas touché. Dans ce cas, le paramètre n’a pas besoin d’être spécifié.
[in] valueSize
L’interprétation de ce paramètre dépend du WS_READ_OPTION.
index
Si WS_RECEIVE_OPTIONAL_MESSAGE est spécifié pour le paramètre receiveOption et qu’aucun autre message n’est disponible sur le canal, ce paramètre n’est pas modifié. Dans ce cas, la fonction retourne WS_S_END.
Sinon, si la fonction réussit, elle contiendra l’index de base zéro dans le tableau de descriptions de message indiquant lequel correspond.
Ce paramètre peut être NULL si l’appelant n’est pas intéressé par la valeur (par exemple, s’il n’y a qu’une seule description de message).
[in, optional] asyncContext
Informations sur la façon d’appeler la fonction de manière asynchrone, ou NULL en cas d’appel synchrone.
[in, optional] error
Spécifie l’emplacement où des informations d’erreur supplémentaires doivent être stockées en cas d’échec de la fonction.
Valeur retournée
Cette fonction peut retourner l’une de ces valeurs.
Code de retour | Description |
---|---|
|
L’opération asynchrone est toujours en attente. |
|
L’option de réception WS_RECEIVE_OPTIONAL_MESSAGE a été spécifiée et il n’y a plus de messages disponibles pour le canal. |
|
Le message reçu contenait une erreur. L’erreur peut être extraite du WS_ERROR à l’aide de WsGetErrorProperty. |
|
L'opération a été abandonnée. |
|
L’opération n’est pas autorisée en raison de l’état actuel de l’objet. |
|
Le point de terminaison distant n’existe pas ou n’a pas pu être localisé. |
|
L’accès a été refusé par le point de terminaison distant. |
|
La connexion avec le point de terminaison distant a été interrompue. |
|
Le point de terminaison distant n’a pas pu traiter la demande. |
|
Le point de terminaison distant n’est actuellement pas en service à cet emplacement. |
|
Le point de terminaison distant ne peut pas traiter la demande en raison d’une surcharge. |
|
Le point de terminaison distant n’était pas accessible. |
|
L’URL de l’adresse du point de terminaison n’est pas valide. |
|
Les données d’entrée n’étaient pas au format attendu ou n’avaient pas la valeur attendue. |
|
L’opération ne s’est pas terminée dans le délai imparti. |
|
L’accès a été refusé par le serveur proxy HTTP. |
|
Le serveur proxy HTTP n’a pas pu traiter la requête. |
|
Un quota a été dépassé. |
|
La vérification de sécurité n’a pas réussi pour les données reçues. |
|
Une opération de sécurité a échoué dans l’infrastructure des services Web Windows. |
|
Un jeton de sécurité a été rejeté par le serveur, car il a expiré. |
|
Le serveur proxy HTTP nécessite le schéma d’authentification HTTP « de base ». |
|
Le serveur proxy HTTP nécessite le schéma d’authentification HTTP « digest ». |
|
Le serveur proxy HTTP nécessite le schéma d’authentification HTTP « negotiate ». |
|
Le serveur proxy HTTP nécessite le schéma d’authentification HTTP « NTLM ». |
|
Le point de terminaison distant nécessite le schéma d’authentification HTTP « de base ». |
|
Le point de terminaison distant nécessite le schéma d’authentification HTTP « digest ». |
|
Le point de terminaison distant nécessite le schéma d’authentification HTTP « negotiate ». |
|
Le point de terminaison distant nécessite le schéma d’authentification HTTP « NTLM ». |
|
Un certificat requis n’est pas dans sa période de validité lors de la vérification par rapport à l’horloge système actuelle ou à l’horodatage dans le fichier signé. |
|
Le nom CN des certificats ne correspond pas à la valeur passée. |
|
Chaîne de certificats traitée, mais terminée dans un certificat racine qui n’est pas approuvé par le fournisseur d’approbation. |
|
Le certificat n'est pas valide pour l'utilisation demandée. |
|
La fonction de révocation n’a pas pu vérifier la révocation car le serveur de révocation était déconnecté. |
|
Nous avons manqué de mémoire. |
|
Un ou plusieurs arguments ne sont pas valides. |
|
Cette fonction peut renvoyer d’autres erreurs non répertoriées ci-dessus. |
Remarques
Cette fonction utilise des métadonnées sur les types de messages attendus afin de désérialiser le corps.
Les métadonnées sont un tableau de pointeurs vers WS_MESSAGE_DESCRIPTIONs.
Chaque description de message contient une valeur d’action, qui est utilisée pour correspondre à l’action du message, et une WS_ELEMENT_DESCRIPTION qui fournit les métadonnées de l’élément body.
Une fois les en-têtes de message reçus, la fonction analyse le tableau afin de trouver une correspondance par rapport à l’action. La première description du message correspondant est utilisée pour désérialiser le corps, et l’index de base zéro de cette description de message dans le tableau est retourné dans le paramètre index out. Si la fonction réussit, le paramètre index out est toujours défini pour indiquer la description du message qui a été utilisée.
Pour qu’une description du message corresponde, la valeur de l’action doit correspondre exactement à celle du message. Si l’action dans le WS_MESSAGE_DESCRIPTION est NULL, l’action correspond toujours. Cela peut être utilisé dans le cas où il n’y a pas d’en-tête d’action dans le message reçu, ou si le corps est toujours le même, quelle que soit l’action.
Si le corps est censé être vide, le champ bodyElementDescription du WS_MESSAGE_DESCRIPTION peut avoir la valeur NULL.
Si bodyElementDescription n’a pas la valeur NULL, cette fonction désérialise le corps comme décrit dans WsReadBody.
Une fois qu’un message a été reçu, ses en-têtes peuvent être inspectés à l’aide de WsGetHeader ou WsGetCustomHeader.
Configuration requise
Client minimal pris en charge | Windows 7 [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows Server 2008 R2 [applications de bureau | Applications UWP] |
Plateforme cible | Windows |
En-tête | webservices.h |
Bibliothèque | WebServices.lib |
DLL | WebServices.dll |