【iPhone】AmazonWebServicesを利用するver.20111026

| トラックバック(0)
このエントリーをはてなブックマークに追加 
皆様、お疲れ様です。
急に寒くなって参りましたが、今年の冬の準備はもうお済みですか?

最近の冬はとても厳しかった印象がありますが、予想によれば
今年の冬はそれほどでもないようです。
それほど〜の予想がどこまでを言っているのかはわかりませんが、
「備えあれば憂いなし」というように熊の冬眠の準備ぐらい入念に
冬の準備はしておきましょう。これも冬の醍醐味ですから。

以下、AmazonWebServicesの利用方法です。
参考までに
Ver.20111026での変更点
---------------------------------------------------------------------------------------------------------------------------
・全てのAPIへのリクエストにおいて、AssociateTagが必須パラメータとなり、リクエスト処理時の確認対象となります。
・SellerLookup, SellerListingLookup および SellerListingSearch オペレーションはAPIでのサポートを終了いたします。
・ItemSearch リクエストの結果として返されるItemPage パラメータは、最大10ページまでに制限されます。
・MerchantId パラメータは、オファー、バリエーションおよび検索結果の絞り込み要素としてのサポートを終了いたします。
・Offers および ItemAttributes レスポンスグループにおいて返されるデータは、最も頻繁に使用される属性に制限されます。
---------------------------------------------------------------------------------------------------------------------------

リクエスト作成サンプル
NSString *ACCESSKEY=@"アクセスキー";
NSString *SECRETKEY=@"シークレットキー";
NSString *ASSOCIATEKEY=@"アソシエイトキー";//20111026版で必須になりました。
    
    
    //タイムスタンプ
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    [formatter setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@"JP"]];
    [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
    NSString *time = [self urlencode:[formatter stringFromDate:[NSDate date]]];
    NSString *timeStamp = [NSString stringWithFormat:@"Timestamp=%@",time];
    
    //サービス名
    NSString *awsECommerceService = @"Service=AWSECommerceService";
    
    //アクセスキー
    NSString *accessKeyId = [NSString stringWithFormat:@"AWSAccessKeyId=%@",ACCESSKEY];
    
    //アソシエイトキー
    NSString *associateKeyId = [NSString stringWithFormat:@"AssociateTag=%@",ASSOCIATEKEY];
    
    //キーワードOr検索コード
    NSString *key = [keyword stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    //ISDNコードをキーワードとしてセット
    NSString *keyWords = [NSString stringWithFormat:@"ItemId=%@",key];
    
    //オペレーション
    //ItemLookupの他にItemSearchなど。キーワードが単語の場合はItemSearchなど
    NSString *ope = @"ItemLookup";//今回はISDNを使った本を検索対象にする
    NSString *operation = [NSString stringWithFormat:@"Operation=%@",ope];
    
    //レスポンスグループ
    //受け取る情報を選択する。選択しなければ情報サイズはSmallになる
    NSString *res = [self urlencode:@"ItemAttributes,EditorialReview,OfferSummary,Images,SalesRank"];
    NSString *responseGroup = [NSString stringWithFormat:@"ResponseGroup=%@",res];
    
    //サーチインデックス
    //検索カテゴリを決定 選択しなければ全カテゴリ検索になる
    NSString *search = @"Books";
    NSString *searchIndex = [NSString stringWithFormat:@"SearchIndex=%@",search];
    
    
    //キーワードコードタイプ
    //ItemIdを使う場合に設定可能。ISBNの他にアマゾンコードなど
    NSString *type = @"ISBN";
    NSString *idtype = [NSString stringWithFormat:@"IdType=%@",type];
    
    
    //バージョン
    //旧バージョンの2009-07-01は2012/02/22までしか使えないので注意!
    NSString *ver = [self urlencode:@"2011-08-01"];
    NSString *version = [NSString stringWithFormat:@"Version=%@",ver];
    
    //条件式連結
    NSString *urlString = [NSString stringWithFormat:@"%@&%@&%@&%@&%@&%@&%@&%@&%@&%@",accessKeyId,associateKeyId,idtype,keyWords,operation,responseGroup,searchIndex,awsECommerceService,timeStamp,version];
    NSString *signHead = [[NSString alloc]initWithString:@"GET\necs.amazonaws.jp\n/onca/xml\n"];
    NSString *forSignString = [NSString stringWithFormat:@"%@%@",signHead,urlString];
    
    //署名を付加したRESTリクエスト作成
    //多くのサイトで紹介されている上にコードが長いため割愛。旧バージョンのものでOK
    NSString *hash =@"シークレットキーを使用した署名を作成する"
    
    //リクエストURL
   //AmazonのURLに作成した条件式と署名を連結する
    NSString *url =  [NSString stringWithFormat:@"http://ecs.amazonaws.jp/onca/xml?%@&Signature=%@",urlString,hash];
   
このURLをリクエストするとXMLファイルが返ってくるので、iPhoneで使用するには
NSXMLParserなどを使ってXML解析を行う必要がある。
(XML解析クラスの中にはシミュレータで動いて、実機で動かないものもあるので注意!)

条件は多くのサイトで紹介されているのでそちらを参照ください。ただ、仕様変更などにより使えなくなった条件や取得できなくなった情報もあるのでご注意ください。

以上


トラックバック(0)

トラックバックURL: http://blog.volv.jp/mt-tb.cgi/127

カスタム検索