楽天のAPIをC#から叩いてみたよ
ちょいと調べたいことがあったので、APIを使ってみました
出たころにほんの少しだけRESTで触ったことはあるのだけど、SOAPを使うのは初めて
で、SOAPは昔少しだけ使ったことがあるレベルなので、手順を忘れないようにメモ
何が困ったかって、楽天ウェブサービス(SOAP)の利用方法の資料がなくて困った困った
パラメタの説明はあるのですが、サンプルコードがないのです。
http://webservice.rakuten.co.jp/api/itemsearch/soap.html
ネット上にある情報もほとんどRESTばっかりですね。ぬー
やってみたら意外とすんなりいけたので、グーグル叩いてる時間ちょいともったいなかったかな、と反省
というわけで以下私が使用して、検索結果を取得するまでのメモ、VS2005でC#を使用
デベロッパーIDは取得済み
- 適当なプロジェクトを作成(今回はWindowsアプリケーションにしました)
- ソリューションエクスプローラの参照設定を右クリック→web参照の追加を選択
- http://api.rakuten.co.jp/rws/soap/ItemSearch/2007-10-25?wsdlをWEB参照に追加する(2007-10-25は今日使用できる一番新しいもの)
- WEBサービスとのラッパークラスが勝手に作られるので以下のように使用、一回のリクエストで30件までしか取得できないのでページ番号を指定して全件取得しています。
using (プロジェクトのネームスペース).jp.co.rakuten.api; namespace (プロジェクトのネームスペース){ public class Test{ public void RakutenTest(){ ItemSearch20071025Service iss = new ItemSearch20071025Service();//接続用のインスタンスを作成 itemSearchParam isp = new itemSearchParam();//パラメータを格納するクラスのインスタンス isp.apiVersion = "1.11";//必須 isp.developerId = "hogehoge";//必須 isp.keyword = "テスト";//keywordかgenreId何れかは必須 isp.field = "0";//検索対象範囲の限定の有無、初期値では限定することになっているので、0にする itemSearchResult isr = iss.operationItemSearch(isp);//検索を行い、結果を格納 if(isr.status == "Success") {//エラーが有る場合、 int pageCount = isr.pageCount; foreach(itemSearchResultItem isri in isr.itemArray) {//各商品名を表示する Console.WriteLine(isri.itemName); } for(int i = 2;i <= pageCount;i++) { System.Threading.Thread.Sleep(1000);//楽天へのアクセスは1秒に1回までなので、スリープする isp.page = i.ToString(); isr = iss.operationItemSearch(isp); foreach(itemSearchResultItem isri in isr.itemArray) { Console.WriteLine(isri.itemName); } } MessageBox.Show("OK"); }else{ MessageBox.Show(isr.statusMsg); } } } }
あとは各商品情報を表示したり加工したりするコードを書いて終了:-)意外と簡単ですねー
最初書いたときはスリープ入れるの忘れてて、途中ではじかれちゃったよ!気をつけましょう:-)