我需要向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'消息......
答案 0 :(得分:4)
您可以通过向问题中提供的端点URL添加服务引用来完成此操作。然后,您可以像调用普通方法一样调用Web方法,只需调用客户端对象即可。下面一步一步:
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并不是真的必要的。