7

我需要访问一个安全的 Web 服务,标头中的每个请求都需要携带一个令牌。

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

但我看不到 Web 服务的 WSDL。

在 C# 中有没有办法创建一个肥皂客户端,没有 WSDL 文件。

4

4 回答 4

6

我已经验证了这个使用HttpWebRequest 类的代码有效:

// 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 教程很有帮助。

于 2010-11-05T17:26:00.907 回答
3

SOAP 客户端只是一个包含更多内容的 HTTP 客户端。请参阅HttpWebRequest 类。然后您必须创建自己的 SOAP 消息,可能使用 XML 序列化。

于 2010-01-27T22:06:41.830 回答
0

您能否要求 Web 服务的开发人员通过电子邮件向您发送 WSDL 和 XSD 文件?如果是这样,您可以将文件转储到一个文件夹中,然后使用硬盘上的 WSDL 添加服务引用。

于 2010-07-19T13:46:15.167 回答
0

您可以创建自己的服务,将其公开为具有 WSDL,然后从该服务中生成客户端……有点漫长。

于 2010-01-27T22:10:24.627 回答