連載:世界の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メソッドを呼び出すためには、以下の処理を行えばよい。
- 「MSSOAP.SoapClient」オブジェクトを作成する。
- 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版) |
Insider.NET 記事ランキング
本日
月間