暖冬傾向で、ゴルフ場の予約が多い!
100万ポイント山分け!1日5回検索で1ポイントもらえる
>>
人気記事ランキング
ブログを作成
楽天市場
250990
HOME
|
DIARY
|
PROFILE
【フォローする】
【ログイン】
楽天ウェブサービスセンターブログ
商品検索API サンプルソース (Java)
■ ItemSearchServlet.java
package shopping;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ItemSearchServlet extends HttpServlet {
private static final String DEVELOPER_ID = "XXXXXX";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
try {
// パラメータを取得
String keyword = request.getParameter("keyword");
if (keyword == null) {
keyword = "";
} else {
keyword = new String(keyword.getBytes("ISO-8859-1"),
"JISAutoDetect");
}
// XSL Transformerの作成
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(
this.getServletContext().getRealPath(
"/WEB-INF/itemSearch.xsl")));
transformer.setOutputProperty(OutputKeys.METHOD, "html");
transformer.setOutputProperty(OutputKeys.ENCODING, "EUC-JP");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
"yes");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setParameter("keyword", keyword);
// 入力ストリーム取得
String requestPath = "http://api.rakuten.co.jp/rws/1.11/rest?developerId="
+ DEVELOPER_ID
+ "&operation=ItemSearch&version=2007-10-25&keyword="
+ URLEncoder.encode(keyword, "UTF-8");
URL requestUrl = new URL(requestPath);
URLConnection connection = requestUrl.openConnection();
InputStream input = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(
input, "UTF-8"));
// XSLT処理
transformer.transform(new StreamSource(reader), new StreamResult(
response.getOutputStream()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
■itemSearch.xsl
<?xml version="1.0" encoding="EUC-JP"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:header="http://api.rakuten.co.jp/rws/rest/Header" xmlns:itemSearch="http://api.rakuten.co.jp/rws/rest/ItemSearch/2007-10-25">
<!-- パラメータ取得 -->
<xsl:param name="keyword" />
<xsl:template match="/">
<html>
<head>
<title>商品検索</title>
</head>
<body>
<form>
<input type="text" name="keyword" size="30" >
<xsl:attribute name="value">
<xsl:value-of select="$keyword" />
</xsl:attribute>
</input>
<input type="submit" name="submit" value="商品検索" />
</form>
<!-- ステータス取得 -->
<xsl:variable name="status" select="Response/header:Header/Status" />
<xsl:choose>
<xsl:when test="$status='Success'"> <!-- Successの場合 -->
<b>検索結果:<xsl:value-of select="Response/Body/itemSearch:ItemSearch/count" />件
<xsl:value-of select="Response/Body/itemSearch:ItemSearch/page" />ページ目を表示</b> <br/>
<table border="0">
<!-- 商品毎にループ開始 -->
<xsl:for-each select="Response/Body/itemSearch:ItemSearch/Items/Item">
<tr>
<td>
<!-- 画像表示 -->
<img>
<xsl:attribute name="src">
<xsl:value-of select="smallImageUrl" />
</xsl:attribute>
</img>
</td>
<td>
<!-- 商品名表示 -->
<a>
<xsl:attribute name="href">
<xsl:value-of select="itemUrl" />
</xsl:attribute>
<xsl:value-of select="itemName" /><br/>
</a>
</td>
</tr>
</xsl:for-each>
<!-- 商品毎にループ終了 -->
</table>
</xsl:when>
<xsl:when test="$status='NotFound'"> <!-- NotFoundの場合 -->
商品は見つかりませんでした
</xsl:when>
<xsl:when test="$status='ClientError'"> <!-- ClientErrorの場合 -->
キーワードを入力してください
</xsl:when>
<xsl:when test="$status='ServerError'"> <!-- ServerErrorの場合 -->
サーバーエラーが発生しました
</xsl:when>
</xsl:choose>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
■web.xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
<servlet>
<servlet-name>itemSearch</servlet-name>
<servlet-class>shopping.ItemSearchServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>itemSearch</servlet-name>
<url-pattern>/itemSearch</url-pattern>
</servlet-mapping>
</web-app>
ジャンル別一覧
出産・子育て
ファッション
美容・コスメ
健康・ダイエット
生活・インテリア
料理・食べ物
ドリンク・お酒
ペット
趣味・ゲーム
映画・TV
音楽
読書・コミック
旅行・海外情報
園芸
スポーツ
アウトドア・釣り
車・バイク
パソコン・家電
そのほか
すべてのジャンル
人気のクチコミテーマ
iPad
イチオシ BETTDOW Magic Keyboard 2…
(2025-10-02 04:19:46)
楽天アフィリエイト♪
スズキ ジムニー JB64 ジムニーシエ…
(2025-11-16 16:09:49)
モバイルよもやま
[ウイルスバスター クラウド]「お…
(2025-10-31 06:43:08)
© Rakuten Group, Inc.
X
共有
Facebook
Twitter
Google +
LinkedIn
Email
Mobilize
your Site
スマートフォン版を閲覧
|
PC版を閲覧
人気ブログランキングへ
無料自動相互リンク
にほんブログ村 女磨き
LOHAS風なアイテム・グッズ
みんなが注目のトレンド情報とは・・・?
So-netトレンドブログ
Livedoor Blog a
Livedoor Blog b
Livedoor Blog c
楽天ブログ
JUGEMブログ
Excitブログ
Seesaaブログ
Seesaaブログ
Googleブログ
なにこれオシャレ?トレンドアイテム情報
みんなの通販市場
無料のオファーでコツコツ稼ぐ方法
無料オファーのアフィリエイトで稼げるASP
ホーム
Hsc
人気ブログランキングへ
その他
Share by: