Partager via


Accès aux en-têtes SOAP dans les orchestrations

Vous pouvez accéder aux propriétés de contexte des en-têtes SOAP définis et inconnus dans les orchestrations. Pour plus d’informations sur les schémas de propriétés et les propriétés de contexte, consultez Schémas de propriété.

Propriétés de contexte des en-têtes SOAP définis

Les propriétés de contexte d’en-tête SOAP définies dans les orchestrations nécessitent un schéma de propriété. Le schéma de propriété doit avoir l’espace de noms http://schemas.microsoft.com/BizTalk/2003/SOAPHeadercible et la propriété Property Schema Base définie sur MessageContextPropertyBase. Chaque nom d’élément racine dans le schéma de propriété doit correspondre au nom de l’élément racine de l’en-tête SOAP défini. Vous pouvez ensuite accédez aux valeurs des propriétés de contexte à l'aide de l'espace de noms du schéma de propriété et à l'aide du nom de la propriété. L'espace de noms du schéma de propriété diffère de l'espace de noms cible mentionné précédemment. Bien que l'espace de noms du schéma de propriété puisse prendre la forme de n'importe quelle chaîne, il utilise généralement la valeur par défaut qu'est le nom du projet. 

L’exemple suivant montre l’accès à la propriété de contexte d’en-tête SOAP pour un espace de noms de schéma de propriété, SOAPHeader et le nom de propriété OrigDest :

stringVar = requestMessageInstance(SOAPHeader.OrigDest);  

Notes

Les en-têtes SOAP définis sont traités en tant qu'en-têtes d'« entrée » ou de « sortie ». Si l'Assistant définit le même en-tête SOAP pour le message de requête et pour le message de réponse, il ne renvoie pas automatiquement la valeur d'entrée dans la réponse. Vous devez explicitement copier la propriété de contexte de l'en-tête SOAP du message de requête dans celle du message de réponse.

Copie de la propriété de contexte de l'en-tête SOAP d'un message entrant

Vous pouvez copier la propriété de contexte de l'en-tête SOAP d'un message entrant dans celle d'un message de réponse.

L'exemple suivant illustre la copie de la propriété de contexte d'un en-tête SOAP :

ResponseMessageInstance(SOAPHeader.OrigDest) = RequestMessageInstance(SOAPHeader.OrigDest);  

Lors de la création d'en-têtes SOAP pour une réponse SOAP, vous devez en premier lieu vous assurer d'avoir correctement créé les en-têtes SOAP. L'adaptateur SOAP ne vérifie pas le contenu des propriétés de contexte d'un en-tête SOAP. Si le message de réponse contient des valeurs d'en-têtes SOAP erronées, l'adaptateur SOAP ne peut pas l'envoyer à l'utilisateur de votre service Web.

Propriétés de contexte des en-têtes SOAP inconnus

La propriété de contexte d'un en-tête SOAP inconnu n'a pas besoin d'un schéma de propriété. Vous pouvez accéder à cette propriété de contexte globale SOAP. UnknownHeaders.

L’exemple suivant montre l’accès à la propriété de contexte d’en-tête SOAP inconnue SOAP. UnknownHeaders :

stringVar = RequestMessageInstance(SOAP.UnknownHeaders);  

Les valeurs contenues dans les propriétés de contexte correspondent à des chaînes comportant des données XML. Le moyen le plus simple d’accéder à ces données consiste à utiliser l’éditeur d’expression BizTalk dans une forme d’affectation de message ou d’expression , à charger la chaîne dans un XmlDocument et à utiliser des requêtes XPATH pour accéder à des champs spécifiques. Pour plus d’informations sur la création de documents XML dans l’éditeur d’expressions BizTalk, consultez Langage XLANG-s.

Les propriétés de contexte sont associées à un message spécifique. Le moteur de messagerie ne mappe pas automatiquement les valeurs des en-têtes SOAP connus depuis un message de requête vers un message de réponse. Lors de la création d'un message de réponse pour un service Web, vous devez définir de manière spécifique les valeurs de l'en-tête SOAP. La commande suivante constitue la méthode la plus simple pour configurer une propriété de contexte d'en-tête SOAP : 

ResponseMessageInstance(SOAPHeader.OrigDest) = "<?xml version="1.0" encoding="utf-16"?><OrigDest xmlns=\"http://SOAPHeaderSchemas.OrigDestSOAPHeader\"><Origination xmlns=\"\">Home</Origination><Destination xmlns=\"\">Work</Destination> </OrigDest>"  

Vous pouvez également y parvenir en créant un XmlDocument et en écrivant la valeur de chaîne du XmlDocument dans la propriété de contexte.

Notes

Si le SOAP. La propriété UnknownHeaders a la valeur Null, BizTalk renvoie automatiquement les en-têtes inconnus reçus dans la requête SOAP à la réponse SOAP. Si le SOAP. La propriété de contexte UnknownHeaders sur le message de réponse n’est pas null, puis BizTalk retourne cette valeur à la réponse SOAP.

Voir aussi

En-têtes SOAP avec les services web publiés