WSDLによるSOAP連携

外部システムからWSDLによるSOAP連携によりデータを取得する機会があったのですが、以外とどこにも連携方法の情報がまとまっていなかった気がするのでまとめます。

WSDLからWebサービスプロキシクラスを作成する。
プロキシクラスを作成する方法は2つあって、1つはSrcUtil.exeをコマンドラインから実行する方法であり、もう1つはVisualStudioの「サービス参照の追加」のアドレスにエンドポイントのアドレスを指定する方法です。
※移動ボタンを押してもサービスが見つからない場合、アドレスの末尾に「?wsdl」を付けて再度移動ボタンを押してみてください。

f:id:katharsis1721:20170314000509p:plain

サービスが見つかりOKボタンを押すと、Webサービスプロキシクラス(CSファイル)とapp.configに設定が追加されます。

②①で作成したプロキシクラスを使用してWebサービスへ接続、データ取得する。

       //Webサービスプロキシクラスを使用して、Webサービスとの接続を行う。
       BasicHttpBinding myBinding = new BasicHttpBinding();
       myBinding.Name = "任意のBinding名";
       EndpointAddress endPointAddress = new EndpointAddress("公開されているエンドポイントのアドレス");
       ChannelFactory<IService> factory = new ChannelFactory<IService>(myBinding,endPointAddress);
       IService channel = factory.CreateChannel();

       //ここからは各WSDLの仕様に依存する。
       //各WSDLが用意しているメソッドを指定することでほしいデータを取得する。
       //ただ任意の引数を指定して、Responseデータを取得する方法に大きな違いはないはず。
       getHogeHogeResponse hogehogeResponse = new getHogeHogeResponse();
       hogehogeResponse = channel.getHogeHoge(任意の引数);

       factory.Close();


参考サイト

code.msdn.microsoft.com

www.smartllc.jp