■SOAP関数とは

PHP5からSOAP関数が標準で利用できるようになっているので、PHPからSOAPで提供されているWebAPIを利用するのはとても簡単に出来ます。
一応オプション扱いになっているので、導入方法はPHPのSOAP関数を見てください。
使えるようになっているかどうかはphpinfoで確認すればよいでしょう。
レンタルサーバーで使えるようになっていない場合は、管理者に連絡すればインストールしてくれると思います。
PHP4の方はPEARのSOAPであるSOAP Client/Server for PHPを使うのが簡単でしょう。

▲ページ先頭へ戻る▲


■サンプル

ここでは、
・ターゲットAPIとしてマイクロソフトが提供しているLive Search
・指定キーワードで画像を20件表示する
サンプルを提示してみます。

function searchImageMSN($keyword)
{
	if(!strlen($keyword))	return;

	$tns = 'http://schemas.microsoft.com/MSNSearch/2005/09/fex'; 
	$op = array('type_ns' => 'tns', 'type_url' => $tns);
	$client = new SoapClient('http://soap.search.msn.com/webservices.asmx?wsdl', $op);

	$sourceRequest = array(
		'Source' => 'Image',
		'Offset' => 0,
		'Count' => 20,
		'ResultFields' => 'Image');
	$requests = array( 'SourceRequest' => $sourceRequest );
	$searchRequest = array(
		'AppID' => 'あなたのアプリケーションID',
		'Query' => $keyword,
		'SafeSearch' => 'Moderate',
		'Flags' => 'None',
		'CultureInfo' => 'ja-JP',
		'Requests' => $requests );
	$search = array('Request' => $searchRequest);

	$response = $client->Search($search);
	$results = $response->Response->Responses->SourceResponse->Results;
	foreach ($results->Result as $result) {
		$tag = '<img src="' . $result->Image->ThumbnailURL . '">';
		print $tag;
	} 
}
このようにSOAP関数の使い方はとても簡単です。
SoapClient コンストラクタの引数としてWSDLのURIを指定すると、オブジェクトが返ってくるので、
後は必要な引数をセットしてから必要なメソッド(ここでは、Search)を呼ぶだけです。
なぜ、Searchメソッド?という疑問があると思います。
WSDL文書を見てもいいですし、SOAP関数のSoapClient->__getFunctions() ? SOAP 関数の一覧を返すでもサポートしている関数一覧を取得できます。
ちなみに、LiveSearchのWSDL文書はここで確認できます。当然ですが、どんな引数が使えるかも定義されているので、これを見れば何が出来るのかが分かります。
getFunctionメソッドを使って確認する場合は、
var_dump($client->__getFunctions());
というコードを追加すれば、メソッド一覧(といってもひとつだけですが・・・)が確認できます。

▲ページ先頭へ戻る▲


■呼び出し例

上のサンプルコードを実装し、「初音ミク」(なんで「初音ミク」?ってのは置いといて・・・、まあ、LiveSearchといったらコレしかないでしょう。)をキーワードとして呼び出した例はここをクリックすると確認できます。

▲ページ先頭へ戻る▲


■SOAPに関連した書籍

(データ提供:Amazon.co.jp)



■お知らせと連絡先

このウェブサイトで取り上げて欲しい話題や分かりにくい点などありましたら、
以下のメールアドレス宛にメッセージをいただければ、参考にさせていただきます。

メールアドレスは、work_komiあっとまーくyahoo.co.jpです。
(「あっとまーく」は、半角英数のあっとまーくに変換してね。)

また、XBOXをお使いの方は、ゲーマータグ(akbox)にてフレンドリクエストを受け付けています。