我想通過使用C#的http POST請求調用ASP.NET web服務(即,我不想使用運行wsdl.exe生成的SoapHttpClientProtocol對象)。通過http請求調用ASP.NET web服務方法
據我所知,該方法包括:
創建HttpWebRequest對象指向的URL/web服務,該方法的方法;
創建SOAP xml信封;
序列化我想使用XmlSerializer傳遞給Web方法的任何參數;
發出請求並解析響應。
我想這樣做,而不必複製和使用生成的代碼。
(1)看起來非常簡單; (2)我不知道這裏的信封是標準的,還是應該如何改變,這取決於我所調用的webservice方法。我想我可能需要添加自定義肥皂標題,如果需要的服務?
(3)這樣做的過程是什麼?我認爲我需要做這樣的事情:
MyClass myObj;
XmlSerializer ser = new XmlSerializer(myObj.GetType());
TextWriter writer = new StringWriter();
ser.Serialize(writer, myObj);
string soapXml = writer.ToString();
writer.Close();
而且,我想我應該在soapXml添加到SOAP:Body元素
(4)我相信我應該提取和反序列化的內容肥皂:身體元素。 (3)中的過程的反向可以嗎?
感謝,
K.
只是好奇,爲什麼你想這樣做硬盤的方式?爲什麼不使用久經考驗的工具? – David 2009-10-22 19:06:15
我在考慮在http請求級別訪問Web服務調用會讓我更好地控制諸如設置soap/http標頭之類的內容,例如...此外,有時,生成Web服務客戶端的wsdl可能不是可用(即使方法簽名已知)... – 2009-10-22 19:58:09