いつもご利用ありがとうございます、
楽天ウェブサービスのお客様担当でございます。
こちらウェブサービスセンターブログをご覧いただいている皆様に、
お知らせがございます。
楽天ウェブサービスのブログが新しくなります。
リリース情報やメンテナンス情報などをより早く皆様にお届けできるようにすると共に、
その他開発に役立つ情報など様々な記事を開発スタッフが書いていく予定です。
RWS開発日記
http://webservice.rakuten.co.jp/blog/
今後は新しいブログをご覧ください。
今後とも楽天ウェブサービスをよろしくお願いします。
Last updated 2008.07.04 18:38:19
株式会社リクルートとサン・マイクロシステムズ株式会社が共同で開催している「Mash up Award 4th」にて、楽天APIを使用した開発アイデアを募集しています。
審査の結果、優秀と認められた作品には賞金(最優秀賞100万円ほか)および賞品が授与されます。
【Mash up Award 4th実施要領】
■応 募 条 件:
まずは下記「Mash up Award 4th」公式ウェブページから参加登録をお願いします。
実施要領の詳細については、併せてご参照ください。
■審 査 基 準:
Mashup Award 4thでは、下記3つの視点から評価・審査を行います。
アイデア:独自性、新規性、優れた着眼点、発展可能性
完 成 度:実用性、ユーザビリティ、アトラクティビティ
デザイン:芸術性、優れた表現技法
■作品募集期間 : 2008/06/03 - 2008/09/16
■受 賞 式 : 2008年10月19日
■賞 金:
最優秀賞・賞金 100万円
優秀賞 各10万円
特別賞 各5万円
※部門賞の設定も予定しています
※該当作品がなかった場合、受賞無しとなる場合もあります。
【Mash up Award 4th公式ウェブページ】
http://mashupaward.jp/
今年は、
特別賞が新設されたり、API提供企業が増えたりと、
去年よりもさらにパワーアップして開催されます。
楽天APIも、前回より提供APIが増えておりますので、
これを機会に、より多くの方に楽天APIを知っていただいて、
たくさんのご意見を頂戴できればと思います。
去年も面白い作品が数多く応募されてましたので、
今年はどんな作品が飛び出すか、私達スタッフも今から大変楽しみにしております。
それでは、皆さまの作品をお待ちしております!
Last updated 2008.06.05 11:56:04
楽天商品検索SOAP API PHPサンプルコード解説
楽天商品検索SOAP APIを利用するPHPの簡単なサンプルコードを紹介します。
■動作環境
- PHP5動作環境
PHP5インストール時に--enable-soapと--enable-mbstringの2つのオプションが指定されている必要があります。
例)
./configure --with-apxs2=/usr/local/apache/bin/apxs --enable-soap --enable-mbstring
■サンプルソースご利用の際の注意事項
・ここで掲載するプログラムに関するサポートは一切しておりません。
・ここで掲載するプログラムで発生した直接的及び間接的に生じた損害について
弊社は一切責任を負いませんのでご了承ください。
■楽天商品検索API/サンプルコード概要
すべてのサンプルコードは
こちら
・検索フォーム
8行目から11行目で、検索を行うHTMLのフォームを記述しています。
1: <html>
2: <head>
3: <title>商品検索</title>
4: </head>
5: <body>
6:
7: <!-- 検索キーワードの入力 -->
8: <form action="" method="post">
9: <input type="text" name="search_keyword" value="商品検索">
10: <input type="submit">
11: </form>
|
・検索キーワードの取得
13行目~20行目で、POSTされた検索キーワードを取得し、UTF-8でデコードしています。
13: <?php
14:
15: // リクエストから検索キーワードをセット
16: if (isset($_REQUEST['search_keyword'])) {
17: $keyword = mb_convert_encoding($_REQUEST['search_keyword'], "UTF-8", "auto");
18: } else {
19: $keyword = "";
20: }
|
・SoapClinetの作成
23行目でSOAPクライアントを生成しています。SoapClientのコンストラクタの引数にはwsdlのURLを指定します。今回は商品検索を行うサンプルなので商品検索のwsdlを取得するURLです。
22: // SoapClientを生成
23: $client_itemsearch=new SoapClient("http://api.rakuten.co.jp/rws/soap/ItemSearch/2007-10-25?wsdl");
|
・パラメータの設定
リクエストに設定するパラメータを作成します。44行目から63行目でパラメータの連想配列を作成しています。
25: // パラメータの値
26: $dev_id = "自分のディベロッパーIDを指定してください"; // developerId
27: $aff_id = "自分のアフィリエイトIDを指定してください"; // affiliateId
28:
29: $api_ver = "1.11"; // apiVersion
30: $version = "2007-10-25"; // version
31: $hit_cnt = "30"; // hits
32: $page_cnt = "1"; // page
33: $sort = "+itemPrice"; // sort
34: $min_price = "0"; // minPrice
35: $max_price = "10000"; // maxPrice
36: $avail = "1"; // availability
37: $field = "1"; // field
38: $carrier = "0"; // carrier
39: $img_f = "1"; // imageFlag
40: $or_f = "0"; // orFlag
41: $gen_info = "1"; // genreInformationFlag
42:
43: # パラメータの連想配列
44: $params = array(
45: 'param' => array(
46: 'affiliateId' => $aff_id,
47: 'developerId' => $dev_id,
48: 'keyword' => $keyword,
49: 'apiVersion' => $api_ver,
50: 'version' => $version,
51: 'hits' => $hit_cnt,
52: 'page' => $page_cnt,
53: 'sort' => $sort,
54: 'minPrice' => $min_price,
55: 'maxPrice' => $max_price,
56: 'availability' => $avail,
57: 'field' => $field,
58: 'carrier' => $carrier,
59: 'imageFlag' => $img_f,
60: 'orFlag' => $or_f,
61: 'genreInformationFlag' => $gen_info
62: )
63: );
|
・APIの呼び出し
67行目でAPIの呼び出しを行っています。引数には上で作成したパラメータの連想配列を指定します。
65: // APIの呼び出し
66: try {
67: $result = $client_itemsearch->operationItemSearch($params);
68: } catch (SoapFault $e) {
69: // 呼び出しに失敗した場合
70: print_r($e);
71: exit(0);
72: }
|
・結果の表示
76行目でステータスのチェックを行い、ステータスがSuccessの場合に、78行目から商品毎にループします。今回のサンプルでは画像と、商品名、店舗名を表示しています。
74: // 結果のHTML表示
75: print_r("<table width=\"100%\" border=\"0\">");
76: if ($result->return->status === "Success") {
77: // 取得に成功した場合
78: foreach ($result->return->itemArray as $value) {
79: print_r("<tr>");
80: print_r(" <td width=\"90\">");
81: print_r("<a href=\"$value->affiliateUrl\"><img src=\"$value->mediumImageUrl\" border=\"0\"></a>");
82: print_r(" </td>");
83: print_r(" <td align=\"left\">");
84: print_r(" 商品名 :<a href=\"$value->affiliateUrl\">$value->itemName</a>");
85: print_r(" <br />");
86: print_r(" 店舗名 :<a href=\"$value->shopUrl\">$value->shopName</a>");
87: print_r(" <br />");
88: print_r(" </td>");
89: print_r("</tr>");
90: }
91: } else {
92: // 取得に失敗した場合
93: // ("NotFound","ServerError","ClientError","Maintenance")
94: print_r($result->return->statusMsg);
95: }
96: print_r("</table>");
97:
98: ?>
99:
100: </body>
101: </html>
|
以上、今回はPHPで、SOAPの商品検索APIを利用する簡単なサンプルを紹介いたしました。
SOAPを利用する際、参考にしていただければ幸いです。
Last updated 2008.02.12 15:43:33
2008/02/03に楽天トラベルのメンテナンスが行なわれます。
楽天トラベルのサービス停止時間は以下の通りです。
2008/02/03 1:00~10:00
(※メンテナンス終了次第、サービスを再開いたします。時間は若干変更となる場合がございますことをご了承ください。)
※詳しくはこちらをご覧ください
<楽天市場 定期メンテナンスのお知らせ>
http://www.rakuten.co.jp/aboutus/am/maint/2008/0203.html
<楽天トラベル 定期メンテナンスのお知らせ>
http://travel.rakuten.co.jp/stop/mente20080203.html
それに伴い以下のトラベル系APIが作業時間中は利用できなくなります。
・楽天トラベル施設検索API
・楽天トラベル施設情報API
・楽天トラベル空室検索API
・楽天トラベル地区コードAPI
・楽天トラベルキーワード検索API
皆さんには大変ご迷惑をお掛け致しますが、何卒よろしくお願いします。
Last updated 2008.01.31 17:50:51
楽天商品検索API Javaサンプルコード解説
楽天商品検索APIを利用したJavaの簡単なサンプルコードを紹介します。
■動作環境
- Java実行環境
- Javaサーブレットコンテナ
■サンプルソースご利用の際の注意事項
・ここで掲載するプログラムに関するサポートは一切しておりません。
・ここで掲載するプログラムで発生した直接的及び間接的に生じた損害について
弊社は一切責任を負いませんのでご了承ください。
■楽天商品検索API/サンプルコード概要
・ファイル構成
WEB-INF/src/shopping/ItemSearchServlet.java
WEB-INF/itemSearch.xsl
WEB-INF/web.xml
■ItemSearchServlet.java
検索キーワードを取得して、XSLT処理を行うサーブレットクラスです。
この全ソースコードは
こちら
・解説1 keywordパラメータの取得
26: // パラメータを取得
27: String keyword = request.getParameter("keyword");
28: if (keyword == null) {
29: keyword = "";
30: } else {
31: keyword = new String(keyword.getBytes("ISO-8859-1"),
32: "JISAutoDetect");
33: }
|
27行目でkeywordパラメータを取得し、
31行目で文字コード変換をしています。
・解説2 XML Transformerの作成
今回のサンプルではXSLTでXMLをHTMLに変換してページを表示します。
実際に、変換処理を行うJavaのTransformerオブジェクトを作成します。
36: TransformerFactory factory = TransformerFactory.newInstance();
37: Transformer transformer = factory.newTransformer(new StreamSource(
38: this.getServletContext().getRealPath(
39: "/WEB-INF/itemSearch.xsl")));
40:
41: transformer.setOutputProperty(OutputKeys.METHOD, "html");
42: transformer.setOutputProperty(OutputKeys.ENCODING, "EUC-JP");
43: transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
44: "yes");
45: transformer.setOutputProperty(OutputKeys.INDENT, "yes");
46: transformer.setParameter("keyword", keyword);
|
36行目でファクトリを作成し、37行目でファクトリから新しいTransformerオブジェクトを作成し、
41~45行目でTransformerオブジェクトのプロパティを設定し、46行目でXSLファイルで使用するkeywordパラメータの値を設定しています。
・解説3 APIからの入力ストリームを取得
49: String requestPath = "http://api.rakuten.co.jp/rws/1.11/rest?developerId="
50: + DEVELOPER_ID
51: + "&operation=ItemSearch&version=2007-10-25&keyword="
52: + URLEncoder.encode(keyword, "UTF-8");
53:
54: URL requestUrl = new URL(requestPath);
55: URLConnection connection = requestUrl.openConnection();
56: InputStream input = connection.getInputStream();
57: BufferedReader reader = new BufferedReader(new InputStreamReader(
58: input, "UTF-8"));
|
49行目でリクエストするAPIのパスを作成し、54行目でそのURLオブジェクトを作成しています。
55行目から57行目で実際にAPIに接続し入力ストリームを取得しています。
・解説4 XSLT処理の実行
61: transformer.transform(new StreamSource(reader), new StreamResult(
62: response.getOutputStream()));
|
61行目でTransformerオブジェクトのtransformメソッドでXMLからHTMLへの変換を行っています。
■itemSearch.xsl
XMLからHTMLへの変換方法が記述されているXSLファイルです。このファイルをいろいろいじることによって画面に表示するデータやレイアウトを自由に変えることができます。
今回のサンプルは画像と商品名のみの表示を行う簡単なものです。
全ソースコードは
こちら
・解説1 パラメータの取得
4: <xsl:param name="keyword" />
|
4行目でサーブレットで設定されたkeywordパラメータの値を取得しています。
・解説2 APIのステータスの取得
21: <xsl:variable name="status" select="Response/header:Header/Status" />
|
21行目でStatus要素の中にあるAPIレスポンスのステータス情報を取得しています。
・解説3 ステータス毎の処理
22: <xsl:choose>
23: <xsl:when test="$status='Success'"> <!-- Successの場合 -->
24: <b>検索結果:<xsl:value-of select="Response/Body/itemSearch:ItemSearch/count" />件
25: <xsl:value-of select="Response/Body/itemSearch:ItemSearch/page" />ページ目を表示</b> <br/>
26:
27: <table border="0">
28: <!-- 商品毎にループ開始 -->
29: <xsl:for-each select="Response/Body/itemSearch:ItemSearch/Items/Item">
30: <tr>
31: <td>
32: <!-- 画像表示 -->
33: <img>
34: <xsl:attribute name="src">
35: <xsl:value-of select="smallImageUrl" />
36: </xsl:attribute>
37: </img>
38: </td>
39: <td>
40:
41: <!-- 商品名表示 -->
42: <a>
43: <xsl:attribute name="href">
44: <xsl:value-of select="itemUrl" />
45: </xsl:attribute>
46: <xsl:value-of select="itemName" /><br/>
47: </a>
48: </td>
49: </tr>
50: </xsl:for-each>
51: <!-- 商品毎にループ終了 -->
52: </table>
53:
54: </xsl:when>
55: <xsl:when test="$status='NotFound'"> <!-- NotFoundの場合 -->
56: 商品は見つかりませんでした
57: </xsl:when>
58: <xsl:when test="$status='ClientError'"> <!-- ClientErrorの場合 -->
59: キーワードを入力してください
60: </xsl:when>
61: <xsl:when test="$status='ServerError'"> <!-- ServerErrorの場合 -->
62: サーバーエラーが発生しました
63: </xsl:when>
64: </xsl:choose>
|
24行目から54行目で、ステータスがSuccess(成功)だった場合の処理を記述しています。
25行目で検索結果件数を表示し、29行目から商品毎にループさせて、商品画像と商品名の表示を行っています。
■web.xml
web.xmlでは、/itemSearchというパスでリクエストを受けたときにItemSearchSearvletで処理するようにサーブレットマッピングの設定をします。
1: <?xml version="1.0" encoding="UTF-8"?>
2: <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
3: <servlet>
4: <servlet-name>itemSearch</servlet-name>
5: <servlet-class>shopping.ItemSearchServlet</servlet-class>
6: </servlet>
7:
8: <servlet-mapping>
8: <servlet-name>itemSearch</servlet-name>
10: <url-pattern>/itemSearch</url-pattern>
11: </servlet-mapping>
12: </web-app>
|
今回は、JavaでXSLTを使用して商品検索を行う簡単なサーブレットを紹介しました。
簡単なサンプルでしたが、XSLTはとても便利な機能ですので、参考にしていただければ幸いです。
Last updated 2008.01.28 16:51:17
本日、以下のAPIで、SOAP形式へ対応しました。
・楽天商品検索API
・楽天商品コード検索API
・楽天ジャンル検索API
・楽天カタログ検索API
・楽天書籍検索API
・楽天CD検索API
・楽天DVD検索API
SOAPの導入により、アプリケーションの開発が簡単になり、
デベロッパーの開発負荷も少なくなります。
今後、他APIでもSOAP形式に順次対応していく予定です。
どうぞご期待ください!
Last updated 2008.01.17 13:09:11
検索条件に(検索キーワード、カタログコードの指定なしで)
genreId=0のみが指定された場合に、本来エラーになるべきところが
エラーにならなかった問題を修正しました。
上記のような指定がされた場合は、
「該当件数が多すぎます。他パラメータを指定し絞込みを行ってください。」
というエラーメッセージが表示されますのでご注意ください。
今後とも楽天ウェブサービスをよろしくお願いします。
Last updated 2007.12.07 19:12:04