Aufrufen einer ASP.NET-Webdienstmethode über eine http-Anforderung
Ich möchte einen ASP.NET-Webdienst über eine http-POST-Anforderung mit C # aufrufen (d. H. Ich möchte nicht das SoapHttpClientProtocol-Objekt verwenden, das durch Ausführen von wsdl.exe generiert wurde).
Soweit ich das beurteilen kann, beinhaltet der Prozess:
Erstellen eines HttpWebRequest-Objekts, das mit der Methode auf die URL / Methode des Webdienstes verweist;
Erstellen eines SOAP-XML-Umschlags;
Serialisieren aller Parameter, die ich mit einem XmlSerializer an die Webmethode übergeben möchte;
Anfordern und Analysieren der Antwort.
Ich möchte dies tun, ohne generierten Code kopieren und verwenden zu müssen.
(1) scheint ziemlich einfach zu sein;
(2) Ich weiß nicht, ob es sich bei dem Umschlag um einen Standard handelt oder wie er sich je nach der von mir aufgerufenen Webservice-Methode ändern sollte. Ich schätze, ich muss möglicherweise benutzerdefinierte Seifen-Header hinzufügen, wenn der Service dies erfordert.
(3) Wie läuft das ab? Ich gehe davon aus, dass ich so etwas tun muss:
MyClass myObj;
XmlSerializer ser = new XmlSerializer(myObj.GetType());
TextWriter writer = new StringWriter();
ser.Serialize(writer, myObj);
string soapXml = writer.ToString();
writer.Close();
Außerdem sollte ich die soapXml zum soap: Body-Element hinzufügen
(4) Ich glaube, ich sollte auch den Inhalt der Seife extrahieren und deserialisieren: Körperelement. Ist es in Ordnung, den umgekehrten Vorgang in (3) anzuwenden?
Vielen Dank,
K.