Ich stehe schon seit einiger Zeit vor diesem Problem. Ich versuche, eine SOAP-Anfrage basierend auf den Informationen aus einer WSDL-Datei zu erstellen, um sie an einen Webdienst zu senden und eine Antwort abzurufen. Nach dem, was ich online gelesen habe, sollte dies ein ziemlich unkomplizierter Prozess sein, und alle Tutorials und Anleitungen waren fast gleich.
Code:
Code: Select all
string message = @"
BB
";
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);
}
}
Mir ist nicht klar, wie das alles funktioniert. Soweit ich weiß, wird die http-Anfrage an den Webdienst gesendet, den wir in der WebRequest.Create()-Methode angeben mit einigen anderen Informationen wie der SOAPAction, die meiner Meinung nach die eigentliche Methode ist, die wir aufrufen möchten? Im Nachrichtentext ist der XML-Namespace verlinkt und die Elemente haben über diesen Namespace Zugriff (GetQuote, Symbol). Für mich hört sich also alles so an, als ob es fließen sollte. Es muss etwas sein, was ich übersehe oder falsch mache, denn ich erhalte einen internen Serverfehler, wenn ich versuche, die Antwort zu lesen.
Ich versuche, über
www.webservicex.com auf einen sehr einfachen Webdienst zuzugreifen. Die Links finden Sie unten.
Service-Link:
http://www.webservicex.net/stockquote.asmx
WSDL:
http://www.webservicex.net/stockquote.asmx?WSDL