9

我需要向 URL 发送 SOAP 请求。但我发现这比我想象的要难。

我必须发送的请求是:

string bla = "" +
"<?xml version='\"1.0\" encoding=\"UTF-8\"?>" +
    "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
        "<soap:Body>" +
            "<ns1:sendNotificationResponse" +
              "xmlns=\"http://notification.services.adyen.com\"" +
              "xmlns:ns2=\"http://common.services.adyen.com\">" +
            "<notificationResponse>[accepted]</notificationResponse>" +
            "</sendNotificationResponse>" +
        "</soap:Body>" +
    "</soap:Envelope>";

我得到了一个 URL:https ://ca-test.adyen.com/ca/services/Notification?wsdl

问题是,我不确定如何从这里继续。我可以简单地向该 URL 发送请求吗?还是我必须先以某种方式导入 WSDL?

我在网上找到了很多例子,但我无法真正理解其中的大部分。有些甚至已经过时了,因为它们仍在使用:Microsoft.Web.Services3

所以简而言之,我对我在这里到底要做什么以及如何做有点一无所知。我只是想发送那个'SOAP'消息......

4

3 回答 3

4

您可以通过将服务引用添加到您在问题中提供的端点 URL 来执行此操作。然后,您可以像调用普通方法一样调用 Web 方法,就在客户端对象之外。下面一步一步来:

  1. 右键单击引用,选择添加服务引用
  2. 输入 URL 以添加服务参考
  3. 在代码中实例化新客户端并使用如下:
ServiceReference1.NotificationPortTypeClient client = new ServiceReference1.NotificationPortTypeClient(); 
client.sendNotification(...);

编辑

更详细地查看 Web 服务,看起来您在问题中包含的 SOAP 请求是在您调用该方法时将由 url 发回的响应 - 而不是您将发送到 Web 服务的请求调用该方法。

于 2012-05-09T12:15:55.147 回答
3

在 Visual Studio 中添加 Web 服务引用不是更容易吗?你得到的是“存根”类,它允许你使用普通的类和方法与 Web 服务进行通信——你不需要关心正在发送的 SOAP 消息等等。

要添加此类引用,您可以选择“添加服务引用”上下文菜单项。根据服务类型,您需要按下服务参考对话框左下方的按钮(在德语中,这称为“Erweitert”,翻译为“增强”或“扩展”)。下一个对话框的“兼容性”部分左下方还有一个按钮,用于添加“.NET 2.0 样式的 Web 服务参考”。

两者之一应该可以帮助您。

如果您需要手动发送请求,您可以向 Web 服务的 URL 发送一个 POST 请求,并将 XML 代码添加为请求正文。

于 2012-05-09T11:59:10.920 回答
1

关于“如何发送soap消息”:取决于使用的协议(http,jms,甚至smtp),SOAP消息甚至可以从命令行,通过telnet,curl等即时发送。

所以关于你的问题:对不起,通用答案,但这取决于使用的 ws-framework。

关于 WSDL:WSDL 充当实现的合同/基础,因此在您的情况下(假设您的 SOAP 消息根据 WSDL 中的模式已经有效)显式使用 WSDL 并不是真正必要的。

于 2012-05-11T11:53:07.120 回答