我需要訪問安全的web服務, 標頭中的每個請求都需要攜帶一個令牌。如何在沒有WSDL的情況下創建soap客戶端
我知道端點到web服務, 我也知道如何創建令牌。
但我看不到Web服務的WSDL。
在C#中有沒有一種方法來創建一個沒有WSDL文件的soap客戶端。
我需要訪問安全的web服務, 標頭中的每個請求都需要攜帶一個令牌。如何在沒有WSDL的情況下創建soap客戶端
我知道端點到web服務, 我也知道如何創建令牌。
但我看不到Web服務的WSDL。
在C#中有沒有一種方法來創建一個沒有WSDL文件的soap客戶端。
我已經驗證了這個代碼,它使用HttpWebRequest class,工作原理:
// Takes an input of the SOAP service URL (url) and the XML to be sent to the
// service (xml).
public void PostXml(string url, string xml)
{
byte[] bytes = Encoding.UTF8.GetBytes(xml);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentLength = bytes.Length;
request.ContentType = "text/xml";
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
{
string message = String.Format("POST failed with HTTP {0}",
response.StatusCode);
throw new ApplicationException(message);
}
}
}
您需要創建適當的SOAP信封,並把它傳遞的「XML」變量。它需要一些閱讀。我發現這個SOAP Tutorial是有幫助的。
SOAP客戶端只是一個HTTP客戶端,其中包含更多內容。請參閱HttpWebRequest class。然後您必須創建自己的SOAP消息,也許使用XML序列化。
您可以創建自己的服務,將其公開爲WSDL,然後從中生成客戶端......種類很長。
您可以請求Web服務的開發人員通過電子郵件向您發送WSDL和XSD文件嗎?如果是這樣,您可以將文件轉儲到一個文件夾中,然後在硬盤上使用WSDL添加服務引用。
可能的重複:http://stackoverflow.com/questions/278037/soap-client-in-c-without-access-to-a-wsdl-file – 2010-01-27 22:18:37