読者です 読者をやめる 読者になる 読者になる

「Webサービス」C# で SOAP クライントの作成

C#SOAP クライアントを作ってみたので、その時のメモ。

[ 環境情報 ]
Windows 7 SP1

使用する Web サービスは、以下のエントリーで作成したものにします。

・「WebサービスAxis2 の環境に Web サービスを登録する - プログラム日記
http://a4dosanddos.hatenablog.com/entry/2013/11/27/012859


1. wsdl.exe を使用してクライアントコードを生成する。

wsdl.exe を使用するとクライアントコードの生成ができるみたいです。
私の環境では "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\wsdl.exe" にいました。

・Web サービス記述言語ツール (Wsdl.exe)
http://msdn.microsoft.com/ja-jp/library/7h3ystb6(v=vs.90).aspx

wsdl のある URL を引数に与えてやるだけ。

wsdl http://***.***.***.***:8080/axis2/services/Axis2Sample?wsdl

すると、上記 Web サービスの場合 "Axis2Sample.cs" というコードが生成される。


2. Web サービスで公開されている API を呼び出す。

1 で生成した Axis2Sample.cs に以下を追記。

public static void Main(string[] args)
{
  Axis2Sample inst = new Axis2Sample();
  Console.WriteLine(inst.hello());
  Console.WriteLine(inst.getUpperString("abcde"));
  
  int r1;
  bool r2;
  inst.add(1, true, 2, true, out r1, out r2);
  Console.WriteLine(r1);
}

※ add メソッドの "true" とかはなんでこれ渡して上手くいくのかわかりません・・・。ちなみに false じゃダメだった。

コンパイル

csc Axis2Sample.cs

実行すると以下の結果が得られる。

hello
ABCDE
3

ちゃんと呼び出せておりますな。
※ パケットとか見ると、SOAP の通信が行なわれているのが確認できます。


まぁ、単純なサンプルだったからかしりませんが、思ったより簡単にいきました。
以上です。