发送SOAP请求,从哪里开始?

时间:2012-05-09 11:55:08

标签: c# .net soap

我需要向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>";

我收到了一个网址:https://ca-test.adyen.com/ca/services/Notification?wsdl

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

我在网上发现了很多例子,但我对大多数例子都没有意义。有些人甚至过时了,因为他们仍在使用: Microsoft.Web.Services3

所以简而言之,我对于我在这里必须做什么以及如何做有点无能为力。我只想发送'SOAP'消息......

3 个答案:

答案 0 :(得分:4)

您可以通过向问题中提供的端点URL添加服务引用来完成此操作。然后,您可以像调用普通方法一样调用Web方法,只需调用客户端对象即可。下面一步一步:

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

    修改

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

答案 1 :(得分:3)

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

要添加此类引用,可以选择“添加服务引用”上下文菜单项。根据服务类型,您需要按下服务引用对话框左下角的按钮(德语中称为“Erweitert”,它将转换为“Enhanced”或“Extended”)。下一个对话框的“兼容性”部分左下方还有一个按钮,用于添加“.NET 2.0样式的Web服务引用”。

其中一人应该帮助你。

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

答案 2 :(得分:1)

关于“如何发送soap消息”:依赖于使用的procotol(http,jms,甚至smtp),SOAP消息甚至可以通过命令行,telnet,curl等发送到instane。

关于你的问题:对于通用答案很抱歉,但这取决于使用的ws-framework。

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