PHPでSOAP
PHPでSOAPを使ってみようと思ったんだけど、SOAPが全然わかってなかったので、
ちょっと勉強してみた。
ちなみに環境は、LINUX鯖だよ。
■そもそもSOAPってなんぞや
SOAPっていうと個人的には本番ができるR18のところってイメージがある。。。
って、風俗的なソープじゃなくて、プロトコルのお話。
-
- -
・Wikiより引用
SOAPは拡張可能で分散的なフレームワークであり、HTTPやSMTPなど様々なコンピュータネットワークの通信プロトコルで利用することができる。
いくつかのSOAPメッセージを相互作用させることによってリモートプロシージャコールが実現できる。SOAPはWebサービスに有効な手段の一つである。
SOAPはXMLに基づいており、XMLの、ヘッダとボディを組み合わせるデザインパターンで設計されている。「ヘッダ」は、オプショナルであり、ルーティングやセキュリティ、そして トランザクションなどのための情報といったメタ情報を格納できる。「ボディ」部分は、主要な情報、別の言い方をすればペイロードと呼ばれるものである。SOAPのペイロードはXML Schemaで規定することができる。
-
- -
まぁ、簡単に使い道を言うと仕様に沿ったXMLをSOAPクライアント側が、SOAPサーバーにリクエストすると
仕様に沿ったXMLを返事してくれるってこと。
XMLとHTTPなどをベースとした、他のコンピュータにあるデータやサービスを呼び出すためのプロトコルって感じ。
■PHPでのSOAPの利用
PHPでSOAPを使うにあたってまず、環境がどうだかチェック。
PHP5だとSOAPのモジュールが導入されていて、soap.soを有効にすればPEAR::SOAPを
利用しなくてもSOAPライブラリが利用できるようになっている。
PHP5より前のバージョンの場合はPEAR::SOAPを使おう。
■SOAPモジュールの利用の仕方
-
- -
マニュアルより引用
ちなみに、この拡張モジュールを使うには libxml 拡張モジュールが必要です。つまり、 --enable-libxml も指定しなければならないということです。 しかし、libxml はデフォルトで有効になっているのでこのオプションは暗黙のうちに指定されています。
SOAP サポートを有効にするには、--enable-soap を指定して PHP の configure を行います。
-
- -
とのこと。
まぁ、マニュアル見てね→SOAPマニュアル
でコンパイルし忘れた!!!とかyumで入れたからどうだかわからんし!
ってなったとき。
①yumの場合
yum install php-soap
.soがあるか確認
/usr/lib64/php/modules/soap.so (64bitの時)
/usr/lib/php/modules/soap.so (32bitの時)
php.iniに
extension=soap.so
を記述
②ソースからコンパイルしたとき
-
- enable-soapを追加してconfigureする
make clean
make
するとlibにsoap.soができてるはず。
そいつを追加すればok
まぁ、「php モジュール追加」ってグーグル先生に聞けば大丈夫。
③pearのやつを入れる場合
pear install soap
こんな感じでいれたはず。忘れた。
pearがインストールされてないってやつは入れてね。
<?php require_once('SOAP/Client.php'); $client = new SOAP_Client('リクエスト先'); $params = array('str' => 'hello', 'str2' => 'world'); $options = array('timeout' => 20); //リクエストするメソッド名を記述 $result = $client->call('getMethod', $params, $options); //出力結果 hello123world echo $result;
<?php require_once('SOAP/Server.php'); function getMethod($str, $str2){ $rs = $str . '123' . $str2; return $rs; } $server = new SOAP_Server(); $server->addToMap('getMethod', array(), array()); $server->service($HTTP_RAW_POST_DATA);