如何在没有WSDL的情况下创建soap客户端

问题描述:

我需要访问安全的web服务, 标头中的每个请求都需要携带一个令牌。如何在没有WSDL的情况下创建soap客户端

我知道端点到web服务, 我也知道如何创建令牌。

但我看不到Web服务的WSDL。

在C#中有没有一种方法来创建一个没有WSDL文件的soap客户端。

+0

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

我已经验证了这个代码,它使用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添加服务引用。