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を愛用
掲載日: 2018-05-27
iPentec all rights reserverd.