9

I need to send a SOAP request to a URL. But i find this harder then i thought it would be.

The request that i have to send is:

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>";

I've been given an URL: https://ca-test.adyen.com/ca/services/Notification?wsdl

The problem is, is that I'm not sure how to go on from here. Can i simply just send a request to that URL? Or do I have to import the WSDL somehow first?

I've found a lot of examples on the net, but I couldn't really make sense out of most of them. Some were even out dated, because they were still using: Microsoft.Web.Services3

So in short, I'm kinda clueless on what I exactly have to do here and how. I simply want to send that 'SOAP' message...

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 サービス参照」を追加するためのボタンもあります。

2つのうちの1つがあなたを助けるはずです。

リクエストを手動で送信する必要がある場合は、POST リクエストを Web サービスの URL に送信し、リクエストの本文として 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 に答える