ASP.NETでWebサービスを作成する (後編)

(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;
    }

【参考】