Webサービスを呼び出す - asmx SOAP Webサービスの呼び出し - C#
SOAPクライアントを利用してSOAPのWebサービスを呼び出すコードを紹介します。
概要
こちらの記事では、C#でWeb サービス (asmx) を作成する手順を紹介し、Webサーバーに配置する手順もあわせて紹介しました。この記事では、配置したWebサービスをC#のプログラムから呼び出すコードを紹介します。
SOAPサーバーを呼び出す具体的な手順は、はじめにプロジェクトの参照でWebサービスへの参照を追加します。サービス参照の追加後、参照したサービスのSoapClientオブジェクトを作成します。Webサービスのメソッド(関数)は作成したSoapClientオブジェクトのメソッドを呼び出すことで呼び出せます。SoapClientを利用することでWebサーバーやインターネットの通信部分のコードを意識せずにWeb経由のメソッドの呼び出しが簡単に記述できます。
プログラム例
事前準備
Webサービスを作成して配置します。今回作成するWebサービスは
こちらの記事で作成したWebサービスを利用します。
Webサービスの追加
Visual StudioでWindows Formアプリケーションを作成します。
ソリューション エクスプローラーのウィンドウのプロジェクトのノードの子ノードの[参照]ノードをクリックして選択します。選択状態で右クリックします。、下図のポップアップメニューが表示されます。メニューの[サービス参照の追加]をクリックします。
[サービス参照の追加]ダイアログボックスが表示されます。
[アドレス]のテキストボックスに呼び出す(接続する)WebサービスのURLを入力します。入力後テキストボックスの右側の[移動]ボタンをクリックします。
入力したURLにアクセスし、Webサービスを取得します。サービスが取得できるとウィンドウ中央の[サービス]枠にWebサービスの一覧が表示されます。
サービスの項目をクリックして中を展開します。[Webサービス名+Soap]オブジェクトが表示されます。クリックして選択します。右側の[操作]エリアにWebメソッド(WebAPI)の一覧が表示されます。
ウィンドウ下部の[名前空間]のテキストボックスの値を変更します。呼び出し元のプログラムから参照したWebサービスを呼び出すための名前空間を設定します。今回は"iPentecSimpleWebServiceReference"としました。設定ができたらウィンドウ右下の[OK]ボタンをクリックします。
Webサービスの参照が追加されます。プロジェクトのノード内に[Connected Service]のノードが追加されます。ノード内に先ほど設定した名前空間の参照オブジェクト[iPen tecSimpleWebServiceReference]のノードが追加されていることが確認できます。
Webサービスの参照が追加できました。
UI
下図のUIを作成します。フォームにテキストボックス2つとボタンを1つ配置します。
コード
下記のコードを記述します。フォームに配置したボタンのClickイベントを実装しています。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AsmxWebServiceCall
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
iPentecSimpleWebServiceReference.SimpleWebServiceSoapClient cl = new iPentecSimpleWebServiceReference.SimpleWebServiceSoapClient();
string value = cl.AddQuote(textBox1.Text);
textBox2.Text = value;
}
}
}
解説
下記のコードがSoapClientオブジェクトを作成するコードです。
iPentecSimpleWebServiceReference.SimpleWebServiceSoapClient cl = new iPentecSimpleWebServiceReference.SimpleWebServiceSoapClient();
SoapClientオブジェクトのAddQuoteメソッドを呼び出すことで、WebサービスのAddQuoteメソッドを呼び出せます。インターネット経由での呼び出しになりますが、Web通信のコードやレスポンスのロジックは記述する必要はありません。Webメソッドの結果はSoapClientオブジェクトのAddQuoteメソッドの戻り値として返されます。戻り値をvalue変数に代入しています。戻り値のvalue変数の値をテキストボックスに表示します。
string value = cl.AddQuote(textBox1.Text);
textBox2.Text = value;
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
上部のテキストボックスに入力文字列を入力します。今回は「ぺんぎんクッキー」を入力します。入力ができたら[button1]ボタンをクリックします。
下部のテキストボックスに結果が表示されます。入力文字列の前後に「"」が追加されダブルクォーテーションで囲まれた文字列が戻ることが確認できます。
こちらの記事で作成したWebサービスのAddQuoteメソッドが実行できていることが確認できます。
Webサービスをプログラムから呼び出すことができました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用