楽天Webサービス

リンク


「楽天ウェブサービスセンター」
http://webservice.rakuten.co.jp/

サンプルページ


http://sakura-computer.co.jp/webservice/rakuten/ra...

ソースコード

#!D:/ruby/bin/ruby.exe -Ku
#
# $Id$
# 楽天 WEBサービスAPIサンプル
# 楽天商品検索API
# Auther:Yasuo Tabira(ytabira at gmail.com)

require 'cgi'
require 'erb'
require 'open-uri'
require 'pp'
require 'rexml/document'

REQUEST_URL = 'http://api.rakuten.co.jp/rws/1.9/rest'
DEVELOPER_ID = 'hoge'

class Hash
  def to_query()
    query = []
    self.each do |key,value|
      query << "#{key}=#{ERB::Util.u(value.to_s)}"    
    end
    query.join("&") 
  end
end

begin
  cgi = CGI.new
  query = cgi.params
  query['developerId'] = DEVELOPER_ID
  query['operation'] = 'ItemSearch'
  query['version'] = '2007-10-25'
  
  uri = "#{REQUEST_URL}?#{query.to_query}"
  
  result = nil
  open(uri) do |f|
      obj = REXML::Document.new(f.read)
      result = obj.root
  end

  script = <<-"EOF"
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>楽天ウェブサービス 商品検索API サンプル</title> 
  </head>
  <body>
      楽天商品検索
      <form action="" method="get">
          キーワード:<input type="Text" name="keyword" value="#{query['keyword']}"> 
          <input type="submit">
      </form>
      <%- if result.elements['Message'] -%>
          <font color="red">エラー:<%= result.elements['Message'] %></font>
      <%- else -%>
          <table border=1>
          <tr bgcolor="#cccccc">
            <th>名前</th><th>商品価格</th>
          </tr>
          <%- result.elements.each('Body/itemSearch:ItemSearch/Items/Item') do |item| -%>
            <tr>
              <th><%= item.elements['itemName'].text %></th>
              <th><%= item.elements['itemPrice'].text %></th>
            </tr>
          <%- end -%>
          </table>
      <%- end -%>
      <div style="margin:10pt 0">
      <pre><%= uri %></pre>
      </div>
  </html>
  EOF

  e = ERB.new(script, nil, '-')
  print cgi.header
  e.run(binding)
rescue => ex
  print cgi.header
  puts ex.message
  print ex.backtrace.inspect
end
2008年03月02日(日) 05:45:18 Modified by y_tabira




スマートフォン版で見る