- (3.1) デスクトップアプリのプロジェクト作成
- (3.2) Webサービスの参照を追加
- (3.3) SOAPクライアントのオブジェクト生成とメソッド呼び出し
- (3.4) メソッドを非同期で呼び出す
- 【参考】
(3.1) デスクトップアプリのプロジェクト作成
Visual Studio で、新しいプロジェクトの作成で「Windows フォームアプリケーション (.NET Framework)」を選択し、適当な名前でプロジェクトを作成する。今回は FormsAppHoge という名前にした。
(3.2) Webサービスの参照を追加
プロジェクトに「追加」→「サービス参照」で、前述のWebサービスのURLを入力して「移動」をクリックする。サービス参照には適当な名前空間を名付ける。今回は WebServiceHogeReference とした。
すると、プロジェクトにWebサービスへの参照が追加される。
(3.3) SOAPクライアントのオブジェクト生成とメソッド呼び出し
WebサービスのSOAPクライアントは <名前空間>.<サービス名>SoapClient という名前のクラスで定義されているので、このクラスのオブジェクトを生成する。
WebServiceHogeReference.WebServiceHogeSoapClient SoapClient = new WebServiceHogeReference.WebServiceHogeSoapClient();
すると、Webサービス側で定義したメソッドを呼び出すことができるようになる。
string output_string = SoapClient.ToUpper( input_string );
(3.4) メソッドを非同期で呼び出す
UIスレッドからWebサービスのメソッド(Webメソッド)を呼び出す場合、非同期実行が望ましい。SOAPクライアントのクラスには <Webメソッド名>Async のような名前のメソッドが用意されている。これらのメソッドを呼び出すと、Webメソッドの非同期実行が開始され、そのタスクが返される。タスクを await で待つと、結果が <名前空間>.<Webメソッド名>Response クラスのオブジェクトとして取得できる。元のメソッドの戻り値は、Body.<Webメソッド名>Result のような名前のフィールドに格納されている。
private async void button1_Click(object sender, EventArgs e) { WebServiceHogeReference.ToUpperResponse resp = await SoapClient.ToUpperAsync(textBox1.Text); textBox2.Text = resp.Body.ToUpperResult; }
【参考】