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

C# 发送SOAP请求,从哪里开始?,c#,.net,soap,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:

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

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

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


简言之,我不知道我到底要做什么,怎么做。我只是想发送“SOAP”消息

在VisualStudio中添加web服务引用不是更容易吗?您得到的是存根类,它允许您使用普通的类和方法与web服务进行通信——您不需要关心正在发送的SOAP消息或诸如此类的事情

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

两个中的一个应该能帮助你


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

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

右键单击引用,选择添加服务引用 输入URL以添加服务引用 在代码中实例化新客户端并按如下方式使用: 编辑


更详细地查看web服务,问题中包含的SOAP请求似乎是您调用该方法时url将发送回的响应,而不是您将发送给web服务以调用该方法的请求。

关于如何发送SOAP消息:取决于使用的procotol http、jms甚至smtp,SOAP消息甚至可以通过telnet、curl等从命令行即时发送

关于你的问题:很抱歉给出了一般性的答案,但这取决于所使用的ws-framework


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

您是否尝试在VS中添加服务引用或Web引用?请尝试以下链接,了解如何创建或使用Web服务:@L.B不,这对我来说是全新的。我确实看到添加服务引用,但没有看到添加Web引用。我将首先尝试添加服务引用。我已经添加了WSDL作为引用。它在对话框中显示我有一个函数“sendNotification”。我想这就是我需要的。我现在在服务引用下有服务引用1。我想这很好,对吧?-接下来我要做的就是实际使用它。你知道我该怎么做吗?-ServiceReference1 service=newServiceReference1-不起作用。现在应该有一个ServiceReference1命名空间。因此,如果您输入ServiceReference1。等待代码完成弹出窗口出现,您将看到一些类。你需要的那个应该以Client结尾。例如Service1Client.Richard发现,行应该是ServiceReference1.NotificationPortTypeClient client=new ServiceReference1.NotificationPortTypeClient
ServiceReference1.NotificationPortTypeClient client = new ServiceReference1.NotificationPortTypeClient(); 
client.sendNotification(...);