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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage