Je reçois le message SOAP suivant que je souhaite publier sur mon service WCF et obtenir une réponse.Message POST Envelope to WCF
"<s:Envelope xmlns:a=\"http://www.w3.org/2005/08/addressing\" xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\">\r\n <s:Header>\r\n <a:Action s:mustUnderstand=\"1\">http://schemas.devleap.com/OrderService/IOrderService/InsertOrder</a:Action>\r\n <a:MessageID>urn:uuid:4cb619b7-365b-4108-880f-b302029d03c2</a:MessageID>\r\n <a:ReplyTo>\r\n <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>\r\n </a:ReplyTo>\r\n </s:Header>\r\n <s:Body>\r\n <InsertOrder xmlns=\"http://schemas.devleap.com/OrderService\">\r\n <order xmlns:d4p1=\"http://schemas.devleap.com/OrderService/Order\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n <d4p1:IdCustomer>2</d4p1:IdCustomer>\r\n <d4p1:IdOrder>46</d4p1:IdOrder>\r\n <d4p1:OrderItems xmlns:d5p1=\"http://schemas.devleap.com/OrderService/OrderItems\" xmlns:d5p2=\"http://schemas.devleap.com/OrderService/OrderItem\">\r\n <d5p1:OrderItem>\r\n <d5p2:IdProduct>P01</d5p2:IdProduct>\r\n <d5p2:Quantity>5</d5p2:Quantity>\r\n <d5p2:EuroPrice>20</d5p2:EuroPrice>\r\n </d5p1:OrderItem>\r\n <d5p1:OrderItem>\r\n <d5p2:IdProduct>P01</d5p2:IdProduct>\r\n <d5p2:Quantity>5</d5p2:Quantity>\r\n <d5p2:EuroPrice>20</d5p2:EuroPrice>\r\n </d5p1:OrderItem>\r\n </d4p1:OrderItems>\r\n </order>\r\n </InsertOrder>\r\n </s:Body>\r\n</s:Envelope>"
Comment puis-je publier ce SOAP sur le service WCF? J'ai essayé ceci mais j'obtiens "Le serveur distant a renvoyé une erreur: (500) Erreur interne de serveur." exception.
using (var client = new WebClient())
{
client.Headers.Add("Content-Type", "application/soap+xml; charset=utf-8");
var response = client.UploadString("http://localhost:8000/OrderService", data);
}
Si je retire l'en-tête de l'enveloppe et ajouter:
client.Headers.Add("Content-Type", "application/soap+xml; charset=utf-8");
client.Headers.Add("SOAPAction", "\"http://schemas.devleap.com/OrderService/IOrderService/InsertOrder\"");
i obtenir la même erreur.
Si je mets
client.Headers.Add("Content-Type", "text/xml; charset=utf-8");
i get exception ce serveur attend "application/soap + xml; charset = utf-8".
Si quelqu'un sait comment l'appeler correctement s'il vous plaît aider.
Merci, Adrya
-1: vous avez résolu le problème. Vous devriez avoir suivi la suggestion de marc_s. Vous auriez pu passer d'un service à l'autre simplement en choisissant l'URL du service. –
J'ai résolu mon problème. Je ne peux pas le faire "normalement" car tout se passe à l'exécution. A l'exécution je ne connais pas les services, je n'ai pas leurs classes proxy, tout ce que j'ai c'est l'URL et la requête SOAP. – Adrya