WEBサービスを使うために必須のSOAPというものがあります。
SOAPを簡単に使えるためのライブラリにnusoapというものがありますので
これを使って、SOAPで通信させる基本を説明します。
※注意
言語はPHPです。
エンコーディング文字などは全てUTF-8にしてください。
Apacheの環境があることが前提。
■1、nusoapを入手(ちょっと編集もする)
まずは、以下のnusoapの配布元からnusoapをダウンロード。
Dietrich Ayala
わかるとは思いますが、Download NuSOAPのリンクをクリックして
DLページからDLして下さい。
DLして解凍すると、lib,sampleというフォルダが作成されます。
※sampleを熟読すれば、使い方がよくわかると思います。
libフォルダにあるnusoap.phpを編集します。
ファイル内を「ISO-8859-1」で検索してヒットした箇所を全てUTF-8に書き換えて下さい。
ただし、以下の箇所は除きます。
1、コメント文
2、if(eregi('^(ISO-8859-1|US-ASCII|UTF-8)$',$enc)){
■2、サーバ、クライアント用のスクリプトファイルを作成する
SOAP通信させるためには通信先で実行される関数を作る必要があります。
つまり、サーバ側に関数を定義します。
次は、それを利用する側、つまり、クライアント側で
どのようにSOAPで定義した関数を利用するかを
スクリプトを記述する必要があります。
まとめると、サーバとクライアントで2つPHPファイルを作成する必要があります。
以下、具体的な内容です。
・サーバ側スクリプト(soap_server.php)
define("SERVICE_NAME", "TestService");
define("NAME_SPACE", "urn:TestService");
define("SOAP_ACTION", NAME_SPACE. "test");
/* SOAPライブラリの読み込み */
require_once 'nusoap/nusoap.php';
$server = new soap_server;
$server->configureWSDL(SERVICE_NAME, NAME_SPACE);
$server->wsdl->schemaTargetNamespace = NAME_SPACE;
//サービスの登録
$server->register('doEcho',
array('string' => 'xsd:string'),
array('return' => 'xsd:string'),
NAME_SPACE
);
//WEBサービスとして提供するメソッドの定義
function doEcho($string)
{
return "From Web Service: ".$string;
}
$HTTP_RAW_POST_DATA = (!isset($HTTP_RAW_POST_DATA))? $GLOBALS['HTTP_RAW_POST_DATA'] : $HTTP_RAW_POST_DATA;
$server->service($HTTP_RAW_POST_DATA);
?>
・クライアント側(soap_client.php)
/* 定数の宣言 */
define("WSDL_FILE", 'http://localhost/soap/soap_server.php');
/* SOAPライブラリの読み込み */
require_once 'nusoap/nusoap.php';
$client = new nusoapclient(WSDL_FILE, true);
//WEBサービスの実行結果をUTF-8でデコードするかどうかのフラグをセット
//今回はUTF-8の文字を、そのままUTF-8で通信するので、無効にする。
//trueにすると文字化けします。
$s->decodeUTF8(false);
$string = "WEBサービス実行!";
//SOAPにより、WEBサービスを実行
$result = $client->call("doEcho",$string );
//WEBサービスの実行結果を出力
if($client->getError()){
echo "ERROR: ". $client->getError();
}else{
echo "Result: ". $result;
}
?>
■3、実行!
作成したPHPとnusoapフォルダをApacheのhtdocs以下のように配置して下さい。
htdocs/soap/nusoap
htdocs/soap/soap_client.php
htdocs/soap/soap_server.php
後はブラウザから以下のURLにアクセスすればOK。
http://localhost/soap/soap_client.php
日本語も通ることがこれで確認できましたね。
■ライセンス
さて、最後に気になるのがnusoapのライセンスです。
このライセンスはLGPLというもので、緩いライセンスです。
改変&配布は自由で、改変しても公開の義務はありません(企業に優しい!)
後は、お好きにどうぞ!