|
上記実験サイト( http://imgsearch.selfip.com )で、Amazon Web Services と Yahoo!検索Webサービス、Google Ajax検索API を使っているのだが、こういうWebサービスのデータのやり取りはREST方式だったりします(Google Ajax検索APIは違いますが…)。
RESTというのは、GETパラメータでURLに値を与えてやればXMLが返ってくる方式。
例えば、Amazon Web Servicesで言えば、
http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&SubscriptionId=********************&AssociateTag=imgsearch-22&Operation=ItemSearch&ResponseGroup=Small,Images&Keywords=test&SearchIndex=Blended&Page=1&ContentType=text/xml
↑こんなURLでアクセスすると
結果がXMLでブラウザに表示されます(SubscriptionIdは自分で取得してください)。
最初の取っ掛かりがURLを打ち込むだけでとても簡単なので、最近のWebサービスはこのRESTがメインだったりします(Yahoo!のWebサービスもほぼREST)。
phpのプログラムはこんな感じ。
$xml = simplexml_load_file($url);
$items = ($xml->Items);
foreach($items->Item as $amazon_item) {
....
....
}
$amazon_itemに検索結果が入ってくるので、後はそれを利用するだけ。
使ってみた結論、SOAPより早い処理で結果が来るので、困らなければ(与える要素が多くなければ)REST方式で十分です。
このRESTより細かく設定できるのがSOAP。
お仕事でSOAPのサービスを使う事になったので、まずはAmazon Web Servicesで試してみました(Amazon Web ServicesはRESTとSOAP両方に対応)。
ネットで情報を探します。…が、phpでSOAPサービスにアクセスする方法ってほとんど載ってないですね。
Amazonのサイトも何処を見ればいいのか分からなかったです(しかも、英語だし…)。
多分↓この辺りです。
Amazon Web Servicesのサイトの左下。
『Developer Connection』-『Resource Center』
『Amazon Associates Web Service』
『Technical Documentation』
『Docs: Amazon E-Commerce Service (API Version: 2007-02-22)』
『Online HTML』-『View』
『API Reference』内に色々あります(WSDLの情報とかモロモロ)。
なんとかやってみました。
php5以上だと標準でSOAPが使える様です。
…が、パッケージのインストールは必要です。
# yum install php-soap
# /etc/init.d/httpd reload
phpのプログラムは以下です。
$client = new SoapClient("http://ecs.amazonaws.com/AWSECommerceService/JP/AWSECommerceService.wsdl");
$params = array(
'SubscriptionId' => '********************',
'AssociateTag' => 'imgsearch-22',
'Request' => array(
'SearchIndex' => 'Blended',
'Keywords' => 'test',
'ResponseGroup' => array('Small','Images')
)
);
$result = $client->ItemSearch($params);
$items = $result->Items;
foreach($items->Item as $amazon_item) {
....
....
}
こんな感じですね(SOAPで提供されてるItemSearchをそのまま使うやり方です)。
もっとキッチリやろうとすると、最初にXMLを作っておいて送信という感じですね。
$msg = '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-enc="http://schemas.xmlsoap.org/soap/encoding/">
<soap:Header>
<UserInfo xmlns="http://********">
<UserName>***************</UserName>
</UserInfo>
</soap:Header>
<soap:Body>
<ItemSearch xmlns="http://********">
....
....
</ItemSearch>
</soap:Body>
</soap:Envelope>';
$client = new SoapClient("http://********wsdl");
$result = $client->__doRequest($msg,"http://********","http://********",0);
結果もXMLパーサで解析したり…。
$xml_parser = xml_parser_create();
xml_set_character_data_handler($xml_parser, "getBody");
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!xml_parse($xml_parser, $result, false)) {
....
....
}
ま、この辺りはやり易い様に…。
本で勉強するならこの辺りですかね(Amazonです)。
~~~~
amazonから、以下のメールが送信されてきた。
『Amazon アソシエイト Web サービスの名称を、「Product Advertising API」へ変更』
『Product Advertising API へのリクエストに、認証のための電子署名を含める必要がある』
名称はいいんだけど、リクエストに認証を付けなければいけないらしい。
説明読んだけど、ちょっと手間がかかる、う~む。
仕方ない、やるか…。
………
………
………
やりました、RESTだけ…。
面倒&時間無しなので、SOAPのプログラムは、RESTに直して対応済み。
※ 『php』に繋がる関連物を 視覚的に探しだせるサイトを作ってみました(よろしければクリックしてみてくださいね)。
リンク元:
(5) : http://www.multiburst.net/ElectricBrain
(2) : http://www.google.com/ie?q=PHP%E3%80%80REST&hl=ja
(2) : http://www.google.co.jp/search?hl=ja&source=hp&q=soap+amazon+php&lr=&aq=f&oq=
(2) : http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=4du&q=php+rest+client&btnG=%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=
(1) : http://www.google.co.jp/search?num=50&lr=lang_ja&q=PHP%20REST
(1) : http://www.google.co.jp/search?hl=ja&rlz=1T4GGLL_jaJP329JP329&q=PHP+REST&lr=&aq=f&oq=
(1) : http://www.google.co.jp/search?hl=ja&q=PHP+REST&lr=lang_ja&aq=f&oq=
(1) : http://www.google.co.jp/search?q=php+rest&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
(1) : http://www.google.com/ie?q=PHP%E3%80%80Web%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%80%80REST&hl=ja
(1) : http://www.google.co.jp/search?hl=ja&q=PHP+SOAP+%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E8%AA%8D%E8%A8%BC&sourceid=navclient-ff&rlz=1B3GGGL_jaJP334JP334&ie=UTF-8
ページ閲覧者数:46人
[ php ] 一覧へ
|