商品検索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> ジャンル別一覧
人気のクチコミテーマ
|