連載:世界のWebサービス
第11回 Windows XPでXML Webサービスへアクセス

1.WebサービスとSOAPクライアント

田口 景介
2002/01/09

■MSSOAP.SoapClientオブジェクト

 それではWSHスクリプトを使ってWebサービス・クライアントを作ってみよう。次のリストに示すXML Webサービスが“http://localhost/Calc/CalcService.asmx”から参照できるものとする。このXML Webサービスは四則演算を行う4つのメソッド(add、sub、multi、div)を持っている。

 1: using System;
 2: using System.Collections;
 3: using System.ComponentModel;
 4: using System.Data;
 5: using System.Diagnostics;
 6: using System.Web;
 7: using System.Web.Services;
 8:
 9: namespace Calc {
10:   public class CalcService : System.Web.Services.WebService {
11:     public CalcService() {
12:       InitializeComponent();
13:     }
14:
15:     #region Component Designer generated code
16:
17:     private IContainer components = null;
18:
19:     private void InitializeComponent() {
20:     }
21:
22:     protected override void Dispose(bool disposing) {
23:       if(disposing && components != null) {
24:         components.Dispose();
25:       }
26:       base.Dispose(disposing);
27:     }
28:
29:     #endregion
30:
31:     [WebMethod]
32:     public long add(long s1, long s2) {
33:       return s1 + s2;
34:     }
35:
36:     [WebMethod]
37:     public long sub(long s1, long s2) {
38:       return s1 - s2;
39:     }
40:
41:     [WebMethod]
42:     public long multi(long s1, long s2) {
43:       return s1 * s2;
44:     }
45:
46:     [WebMethod]
47:     public long div(long s1, long s2) {
48:       return s1 / s2;
49:     }
50:   }
51: }
四則演算を行う4つのメソッドを持つXML Webサービス「CalcService」

 このXML Webサービスを呼び出し、「(1 + 2) * (7 - 2)」の演算結果を表示するWSHスクリプトを次に示す。

1: var sc = WScript.CreateObject("MSSOAP.SoapClient");
2: sc.mssoapinit("http://localhost/Calc/CalcService.asmx?wsdl");
3:
4: var result = sc.multi(sc.add(1, 2), sc.sub(7, 2));
5:
6: WScript.Echo(result);
CalcServiceを呼び出すWSHスクリプトCalc.js(JScript版)
 
Calc.jsの実行結果画面

 拍子抜けするほど簡単なスクリプトでXML Webサービスを呼び出せることが分かるだろう。XML Webサービスが公開するWebメソッドを呼び出すためには、以下の処理を行えばよい。

  1. 「MSSOAP.SoapClient」オブジェクトを作成する。
  2. mssoapinitメソッドでWSDLファイルを読み込み、オブジェクトを初期化する。

 するとSoapClientオブジェクトがXML Webサービスにバインドされ、Webメソッドが呼び出し可能になる。C#やVBでクライアントを作るときのように、WSDLファイルからプロキシ・コードを生成する必要はない。また、このCalcサービスではすべてlong型でデータを扱っているが、それがlong型であることをスクリプト側で意識する必要はない。スクリプトでは文脈に応じて適切かつ自動的にデータ型が変換されるからだ。このあたりはスクリプト言語が持つ柔軟性の高さが遺憾なく発揮されている好例といえるだろう。

 参考までに、上のリストをVBScriptで書き換えたスクリプトを次に示す。スクリプトが単純なこともあるが、ほとんど変わらないことが分かるだろう。筆者はJScriptを好んで使う口だが、VBScriptの開発元がMicrosoftということもあって、WSHスクリプトのサンプル・プログラムのほとんどはVBScriptで記述されているので、これからWSHスクリプトを使い始めるのであれば、VBScriptの方が学習は容易だろう。

1: set sc = WScript.CreateObject("MSSOAP.SoapClient")
2: sc.mssoapinit("http://localhost/Calc/CalcService.asmx?wsdl")
3:
4: result = sc.multi(sc.add(1, 2), sc.sub(7, 2))
5:
6: WScript.Echo(result)
CalcServiceを呼び出すWSHスクリプトCalc.vbs(VBScript版)
 

 INDEX
  [連載]世界のWebサービス―― 究極のWebサービスを求めて ――
  第11回 Windows XPでXML Webサービスへアクセス
  1.WebサービスとSOAPクライアント
    2.WebページからXML Webサービスへアクセス
 
「世界のWebサービス」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間