特集
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)。
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 ?> |
正しく動作しなかった場合、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月号
第1特集
第2特集 Windowsメール環境からの脱出 |
[照井進吾,UNIX USER]
Copyright(C) 2010 SOFTBANK Creative Inc. All Right Reserved.