J'essaye de composer un message SOAP (y compris l'en-tête) dans C# .NET pour l'envoyer à une URL en utilisant le message HTTP. L'adresse URL à laquelle je veux l'envoyer n'est pas un service web, elle reçoit juste des messages SOAP pour finalement en extraire des informations. auriez vous des idées pour faire ça?Objet SOAP sur un message HTTP en C# .NET
12
A
Répondre
15
Vous devez d'abord créer un fichier XML valide. J'utilise LINQ to XML pour y parvenir, comme suit:
XNamespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/";
var document = new XDocument(
new XDeclaration("1.0", "utf-8", String.Empty),
new XElement(soapenv + "Envelope",
new XAttribute(XNamespace.Xmlns + "soapenv", soapenv),
new XElement(soapenv + "Header",
new XElement(soapenv + "AnyOptionalHeader",
new XAttribute("AnyOptionalAttribute", "false"),
)
),
new XElement(soapenv + "Body",
new XElement(soapenv + "MyMethodName",
new XAttribute("AnyAttributeOrElement", "Whatever")
)
)
);
Puis-je l'envoyer à l'aide (EDIT:. Ajouté XDocument.ToString()
ici)
var req = WebRequest.Create(uri);
req.Timeout = 300000; //timeout
req.Method = "POST";
req.ContentType = "text/xml;charset=UTF-8";
using (var writer = new StreamWriter(req.GetRequestStream()))
{
writer.WriteLine(document.ToString());
writer.Close();
}
Si je dois lire une réponse, Je ne (ce qui est suivi du code ci-dessus):
using (var rsp = req.GetResponse())
{
req.GetRequestStream().Close();
if (rsp != null)
{
using (var answerReader =
new StreamReader(rsp.GetResponseStream()))
{
var readString = answerReader.ReadToEnd();
//do whatever you want with it
}
}
}
0
votre code ci-dessus était manquant une parenthèse et avait une virgule supplémentaire, je l'ai fixé ici:
XNamespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/";
var document = new XDocument(
new XDeclaration("1.0", "utf-8", String.Empty),
new XElement(soapenv + "Envelope",
new XAttribute(XNamespace.Xmlns + "soapenv", soapenv),
new XElement(soapenv + "Header",
new XElement(soapenv + "AnyOptionalHeader",
new XAttribute("AnyOptionalAttribute", "false")
)
),
new XElement(soapenv + "Body",
new XElement(soapenv + "MyMethodName",
new XAttribute("AnyAttributeOrElement", "Whatever")
)
)
)
);
Questions connexes
- 1. tcpmon - http et soap message
- 2. Comment mapper un objet C# à un message soap
- 3. requête SOAP sur retard HTTP
- 4. Message HTTP Java pour le message XML SOAP
- 5. Bibliothèque C++ pour générer un message SOAP en utilisant WSDL
- 6. Expiration du message SOAP
- 7. Puis-je ajouter un en-tête personnalisé http au message SOAP
- 8. SOAP et HTTP Post
- 9. Comment créer des messages SOAP? Comment convertir un message de savon en objet?
- 10. SOAP: PHP WebService et .Net
- 11. Demande HTTP SOAP très lente
- 12. bâtiment message SOAP avec le message XMLDocument VB.NET
- 13. Java Webservice objet null retour à un client .net
- 14. Comment faire pour tracer le message SOAP sur Glassfish 3
- 15. Comment attacher un objet à un événement en C#/.NET?
- 16. Utilisation de LINQ to XML pour analyser un message SOAP
- 17. comment gérer le message eBay SOAP
- 18. Envoyer un message XML via HTTP Publier sur l'IP: Port
- 19. Écrire un objet .NET dans C?
- 20. Parse et SOAP requête en C#
- 21. Vérification d'un message SOAP signé WCF
- 22. Faire un message HTTP dans .NET (Vb) avec des données compressées en utilisant deflatestream
- 23. Comment envoyer un message à un objet?
- 24. SOAP avec pièce jointe (SwA) en C#
- 25. Messages SOAP sur iPhone
- 26. Envoyer un message à un objet
- 27. Cryptage du message SOAP dans l'axe 2
- 28. Services HTTP/SOAP sur Linux - recommandation s'il vous plaît
- 29. Soap logging in .net
- 30. un message étrange sur les threads en C#
Vous avez raison, il existe un moyen plus simple de convertir un 'XDocument' en chaîne. C'est la méthode 'ToString()'. Il y a une surcharge qui vous permet de spécifier si vous voulez que le XML soit indenté et formaté ou non (formatage par défaut). –
Merci, changé à la fois mon code et l'exemple ci-dessus. –
Qu'est ce que c'est "utiliser"? – baash05