2010-01-27 109 views
6

我需要訪問安全的web服務, 標頭中的每個請求都需要攜帶一個令牌。如何在沒有WSDL的情況下創建soap客戶端

我知道端點到web服務, 我也知道如何創建令牌。

但我看不到Web服務的WSDL。

在C#中有沒有一種方法來創建一個沒有WSDL文件的soap客戶端。

+0

可能的重複:http://stackoverflow.com/questions/278037/soap-client-in-c-without-access-to-a-wsdl-file – 2010-01-27 22:18:37

回答

5

我已經驗證了這個代碼,它使用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是有幫助的。

3

SOAP客戶端只是一個HTTP客戶端,其中包含更多內容。請參閱HttpWebRequest class。然後您必須創建自己的SOAP消息,也許使用XML序列化。

0

您可以創建自己的服務,將其公開爲WSDL,然後從中生成客戶端......種類很長。

0

您可以請求Web服務的開發人員通過電子郵件向您發送WSDL和XSD文件嗎?如果是這樣,您可以將文件轉儲到一個文件夾中,然後在硬盤上使用WSDL添加服務引用。

相關問題