|
上記実験サイト( 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』に繋がる関連物を 視覚的に探しだせるサイトを作ってみました(よろしければクリックしてみてくださいね)。
リンク元:
(2) : http://www.google.co.jp/search?rlz=1C1CHMV_jaJP354JP354&aq=f&sourceid=chrome&ie=UTF-8&q=PHP+rest
(1) : http://www.google.co.jp/search?hl=ja&lr=&q=rest+soap+%E9%81%95%E3%81%84&start=10&sa=N
(1) : http://www.google.co.jp/search?hl=ja&source=hp&q=web+api+rest+soap&lr=&aq=f&aqi=&aql=&oq=&gs_rfai=
(1) : http://www.google.co.jp/search?q=%E3%82%A2%E3%83%9E%E3%82%BE%E3%83%B3%20web%20service%20REST%20PHP&hl=ja&lr=&tbo=1&output=search&tbs=qdr:y&ei=JoiYS7miKcqTkAW-jKyLAQ&sa=X&oi=tool&resnum=5&ct=tlink&ved=0CBoQpwU
(1) : http://www.google.co.jp/search?hl=ja&lr=&q=amazon+web+service+%E7%BD%B2%E5%90%8D+SOAP&start=10&sa=N
(1) : http://www.google.co.jp/hws/search?hl=ja&q=REST+PHP&client=fenrir&adsafe=off&safe=off&lr=lang_ja
(1) : http://www.google.co.jp/search?hl=ja&q=php+rest+url&lr=lang_ja&rlz=1I7ADRA_ja
(1) : http://www.google.co.jp/search?hl=ja&source=hp&q=SOAP+REST&lr=&aq=f&aqi=g4g-m1&aql=&oq=
(1) : http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla%3Aja%3Aofficial&q=php+restful%E3%81%A8%E3%81%AF&lr=&aq=f&aqi=&aql=&oq=&gs_rfai=
ページ閲覧者数:16人
[ php ] 一覧へ
|