Différents moteurs de services Web acheminent différemment les requêtes entrantes vers des implémentations de services Web particulières.
Vous avez dit "services Web", mais vous n'avez pas spécifié l'utilisation de SOAP. Je vais supposer SOAP.
Le SOAP 1.1 specification dit ...
Le champ d'en-tête de requête HTTP SOAPAction peut être utilisé pour indiquer l'intention de la requête HTTP SOAP. La valeur est un URI identifiant l'intention. SOAP ne place aucune restriction sur le format ou la spécificité de l'URI ou qu'il est résolvable. Un client HTTP DOIT utiliser ce champ d'en-tête lors de l'émission d'une requête HTTP SOAP.
La plupart des moteurs de service Web sont conformes à la spécification, et donc utiliser l'en-tête SOAPAction:
. Cela ne fonctionne évidemment qu'avec les transmissions SOAP-over-HTTP
.
Lorsque HTTP n'est pas utilisé (par exemple, TCP ou un autre), le moteur de services Web doit se replier sur quelque chose. Beaucoup utilisent la charge utile du message, en particulier le nom de l'élément de niveau supérieur dans le fragment XML au sein du soap:envelope
. Par exemple, le moteur pourrait regarder ce message entrant:
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<soap:Body>
<m:GetAccountStatus xmlns:m="Some-URI">
<acctnum>178263</acctnum>
</m:GetAccountStatus>
</soap:Body>
</soap:Envelope>
... trouver l'élément GetAccountStatus
, puis acheminer la demande sur cette base.
Je reçois une erreur lorsque j'essaie d'obtenir la réponse avec ce que vous avez écrit pour 'utiliser (HttpWebResponse response = (HttpWebResponse) request.GetResponse())', sur cette ligne.Y a-t-il un autre moyen d'obtenir la réponse? Dit pas connu, 'GetResponse()'. –