C#からJAX-WSのWebサービスにアクセスしてみる
C#からJAX-WSのWebサービスへのアクセスを試してみます。
Windows系の開発はずいぶんご無沙汰なのですっかり忘れているのですが。。まず開発ツールのインストールから。以下のサイトから無償版のVisual C#用をインストールしました。いつの間にかExpressエディションができているんですね。C#自体勉強してみたくなってきました。
Microsoft Visual Studio Express
Visual Studio C#を起動してプロジェクトを作成。Windowsフォームアプリケーションにしました。
プロジェクトをメニューからサービス参照の追加を選択します。
アドレスにWebサービスのWSDLのURLを入力し移動をクリックします。正常にWSDLが取得できれば、サービスが一覧に表示されます。名前空間を入力してOKするとアクセスするためのコードが自動生成されます。
クライアントは、こんな感じでテキストフィールドとボタンを付けて、送信をクリックするとWebサービスを呼び出し、レスポンスをメッセージボックスで表示するようにしてみました。
実際のコードです。HelloServiceReference名前空間のコードは自動生成です。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; namespace HelloServiceClientApplication { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { HelloServiceReference.HelloClient service = new HelloServiceReference.HelloClient(); try { String result = service.sayHello3(textBox1.Text); MessageBox.Show(result); } catch (System.ServiceModel.FaultException<HelloServiceReference.HelloException> ex) { MessageBox.Show("Fault:" + ex.Detail.code, ex.Detail.message); Debug.WriteLine(ex.Detail.ToString()); } } } }
例外が発生した場合には、FaultExceptionがスローされます。WSDLで定義している例外を処理したい場合には、型パラメータを付加するとキャッチできるようです(上記のコードではHelloException以外が未処理ですが)。
C#は不慣れなのでVisualStudioのアシストのみで書いたコードなので間違いあるかもしれませんが問題なくJAX-WSのサービスにアクセスできました。特に意識することなく相互運用可能なWebサービスが構築できるんですね。