だらだらやるよ。

こげつのIT技術メモ

楽天のAPIをC#から叩いてみたよ

ちょいと調べたいことがあったので、APIを使ってみました
出たころにほんの少しだけRESTで触ったことはあるのだけど、SOAPを使うのは初めて
で、SOAPは昔少しだけ使ったことがあるレベルなので、手順を忘れないようにメモ

何が困ったかって、楽天ウェブサービス(SOAP)の利用方法の資料がなくて困った困った
パラメタの説明はあるのですが、サンプルコードがないのです。
http://webservice.rakuten.co.jp/api/itemsearch/soap.html


ネット上にある情報もほとんどRESTばっかりですね。ぬー
やってみたら意外とすんなりいけたので、グーグル叩いてる時間ちょいともったいなかったかな、と反省


というわけで以下私が使用して、検索結果を取得するまでのメモ、VS2005でC#を使用
デベロッパーIDは取得済み

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);
			}
		}
	}
}

あとは各商品情報を表示したり加工したりするコードを書いて終了:-)意外と簡単ですねー


最初書いたときはスリープ入れるの忘れてて、途中ではじかれちゃったよ!気をつけましょう:-)