特集
2004/05/28 18:30 更新

UNIX USER 2004年6月号「実践! 最新PHP 5」より転載:
Part 3 PHP 5に標準バンドルされた機能 (3/3)


SOAP

 Webサービスどうしの連携を行う際に便利な機能を、PHP 5は標準でサポートしている。それが、SOAPである。本節では、SOAPのサンプルスクリプトを用いて解説する。

SOAPとは

 SOAPとは、相手側のWebサービスとのメッセージ交換やリモートプロシージャ※の呼び出しをXMLベースで行うプロトコルだ(図5)。

zu5.jpg

図5 SOAPの概念図(クリックで拡大します)

 PHP 5でSOAPを利用するには、SOAPの定義ファイルであるWSDL※ファイルをコンストラクタの引数に指定してSoapClientクラスのオブジェクトを取得する。このオブジェクトには、WSDLに記述されている情報に従って、リモートプロシージャなどの操作を行うためのメソッドが実装される。

Google APIを使ってみる

 検索エンジンの最大手であるGoogleは、検索機能をWebサービスとしても提供している。これは、Google APIという名称で、登録すれば誰でも利用できる。Google APIはSOAPによる通信APIなので、これを利用してみよう。

 Google APIの利用は、リスト3のスクリプトから行える。登録作業も含めて次の手順に従ってほしい。

1:Google Web APIs(http://www.google.com/apis/)にアクセスする

2:Google Accountの登録を行う

3:Google Web APIs Developer’s Kitのダウンロードを行う

4:Googleからメールで送られてくるライセンスキーを、サンプルスクリプトの11行目に入力する

5:Developer’s Kitの中にあるGoogleSearch.wdslを、スクリプトと同じディレクトリに配置する

 1〜5の手順が正しく行われていれば、検索フォームが表示され、Googleと同じように検索を行えるはずである(図6)。

リスト3 Google APIへのアクセス
1 <form action="<?=$_SERVER["REQUEST_URI"]?>" method="post">
2 <input type="text" name="q" value="">
3 <input type="submit">
4 </form>
5 <hr>
6 <?PHP
7 // Google API(SOAPクライアント)のインスタンスを用意する
8 $client = new SoapClient("./GoogleSearch.wsdl");
9
10 // Google Key(Googleから取得したキー)を代入する
11 $key = '*************/*/****************';
12
13 // 検索キーワードをUTF-8にエンコードする
14 $query = mb_convert_encoding(@$_REQUEST["q"], "UTF-8", "auto");
15
16 // Google APIのdoGoogleSearchメソッドを実行する
17 $result = $client->doGoogleSearch(
18 $key, $query, 0, 10, false, "countryJP", false, "lang_ja", "UTF-8", mb_internal_encoding()
19 );
20
21 // 検索結果の表示
22 echo "<dl>";
23 foreach ($result->resultElements as $obj) {
24 // ページタイトルの取得
25 $title = mb_convert_encoding($obj->title, mb_internal_encoding(), 'auto');
26 // 抜粋の取得
27 $snippet = mb_convert_encoding($obj->snippet, mb_internal_encoding(), 'auto');
28 $snippet = preg_replace("/<br>/", "", $snippet);
29
30 // 整形して表示する
31 echo "<dt>■{$title}</dt>";
32 echo "<dd><a href=\"{$obj->URL}\">{$obj->URL}</a></dd>";
33 echo "<<dd>{$snippet}</dd>";
34 }
35 echo "</dl>";
36 ?>

zu6.jpg

図6 キーワード「UNIX」で検索した結果

 正しく動作しなかった場合、Googleのライセンスキーの値と、wdslファイルの有無を確認してみよう。

このページで出てきた専門用語
リモートプロシージャ
相手側に実装された機能を遠隔で実行する仕組み。SOAPのほかに、分散オブジェクト技術などでも利用されている。

WSDL
SOAPサーバーが提供するオブジェクトの機能や内容を記述したファイル。情報はすべ てXMLで記述されている。


以降の掲載予定
Part 1 待望のPHP 5リリース
Part 2 Zend Engine 2
Part 3 PHP 5に標準バンドルされた機能(本記事)
Part 4 PHP 4からPHP 5への移行

UNIX USER 6月号表紙 UNIX USER 6月号

第1特集
Linuxで多チャンネル同時録画

第2特集 Windowsメール環境からの脱出
第3特集 実践! 最新PHP 5


前のページ | 1 2 3 |      

[照井進吾,UNIX USER]

Copyright(C) 2010 SOFTBANK Creative Inc. All Right Reserved.