J'ai été bloqué sur ce problème depuis un certain temps maintenant. J'essaie de créer une requête SOAP basée sur les informations d'un fichier WSDL à envoyer à un service Web et récupérer une réponse. D'après ce que j'ai lu en ligne, cela devrait être un processus assez simple, et tous les tutoriels et les guides ont été presque les mêmes.500 Erreur de serveur interne lors de l'accès au service Web à partir de C#
code:
string message = @"<?xml version=""1.0"" encoding=""utf-8""?>
<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
<soap:Body>
<GetQuote xmlns=""http://www.webservicex.net/"">
<symbol>BB</symbol>
</GetQuote>
</soap:Body>
</soap:Envelope>";
HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create(@"http://www.webservicex.net/stockquote.asmx");
webRequest.Headers.Add(@"SOAPAction:http://www.webservicex.net/GetQuote");
webRequest.ContentType = "text/xml;charset=\"utf-8\"";
webRequest.Method = "POST";
XmlDocument soapEnvelopeXml = new XmlDocument();
soapEnvelopeXml.LoadXml(message);
using (Stream stream = webRequest.GetRequestStream())
{
soapEnvelopeXml.Save(stream);
}
using (WebResponse response = webRequest.GetResponse())
{
using (StreamReader rd = new StreamReader(response.GetResponseStream()))
{
string soapResult = rd.ReadToEnd();
Console.WriteLine(soapResult);
}
}
Je ne dois pas être clair sur la façon dont tout cela fonctionne, à ma compréhension de la requête HTTP est envoyée au service Web que nous précisons dans la méthode WebRequest.Create() avec quelques-uns D'autres informations comme le SOAPAction qui im guessing est la méthode réelle que nous voulons invoquer? Dans le corps du message, l'espace de noms XML est lié et les éléments ont accès via cet espace de noms (GetQuote, symbole). Donc, pour moi, tout sonne comme si ça devait couler. Il doit y avoir quelque chose que je suis manquant ou mal faire parce que j'obtiens une erreur de serveur interne quand j'essaye de lire la réponse. J'essaie d'accéder à un service Web très basique à partir de www.webservicex.com. Les liens sont fournis ci-dessous.
Link Service: http://www.webservicex.net/stockquote.asmx
WSDL: http://www.webservicex.net/stockquote.asmx?WSDL
C'est exactement ma confusion. J'ai utilisé cette interface et j'ai même utilisé les exemples de code pour structurer mes messages SOAP. –