スポンサーサイト
新しい記事を書く事で広告が消せます。
iPhoneとかプログラミングとかロボットとか・・・
http://ecs.amazonaws.jp/onca/xml?
AWSAccessKeyId=1SM7CKHWKSJKJFPKBA02
&Operation=ItemSearch
&ResponseGroup=Request%2CImages
&Service=AWSECommerceService
&Timestamp=2009-07-22T13%3A41%3A39Z
&Version=2009-07-01
&Nace%2BU3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg%3D
AjaxTowerより引用
0 AWSのアカウントを取得
1 タイムスタンプの作成・追加
2 リクエストのパラメーターを値をURLエンコード
3 署名対象のリクエスト文字列の作成
4 HMAC - SHA256ハッシュアルゴリズムを使って署名を作成
5 署名をリクエストに追加
6 リクエスト!
//タイムスタンプ
NSDateFormatter *formatter = [[[NSDateFormatter alloc]init]autorelease];
[formatter setLocale:[[[NSLocale alloc]initWithLocaleIdentifier:@"JP"]autorelease]];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSString *time = [formatter stringFromDate:[NSDate date]];
-(NSString *) urlencode: (NSString *) url
{
NSArray *escapeChars = [NSArray arrayWithObjects:@";" , @"/" , @"?" , @":" ,
@"@" , @"&" , @"=" , @"+" ,
@"$" , @"," , @"[" , @"]",
@"#", @"!", @"'", @"(",
@")", @"*", nil];
NSArray *replaceChars = [NSArray arrayWithObjects:@"%3B" , @"%2F" , @"%3F" ,
@"%3A" , @"%40" , @"%26" ,
@"%3D" , @"%2B" , @"%24" ,
@"%2C" , @"%5B" , @"%5D",
@"%23", @"%21", @"%27",
@"%28", @"%29", @"%2A", nil];
int len = [escapeChars count];
NSMutableString *temp = [url mutableCopy];
int i;
for(i = 0; i < len; i++)
{
[temp replaceOccurrencesOfString: [escapeChars objectAtIndex:i]
withString:[replaceChars objectAtIndex:i]
options:NSLiteralSearch
range:NSMakeRange(0, [temp length])];
}
NSString *out = [NSString stringWithString: temp];
return out;
}
//タイムスタンプ
NSDateFormatter *formatter = [[[NSDateFormatter alloc]init]autorelease];
[formatter setLocale:[[[NSLocale alloc]initWithLocaleIdentifier:@"JP"]autorelease]];
[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";
//アクセスキー
//ACCESSKEYは0で取得したAccessKeyID
NSString *accessKeyId = [NSString stringWithFormat:@"AWSAccessKeyId=%@",ACCESSKEY];
//キーワード
NSString *key = [@"ハリーポッター" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *keyWords = [NSString stringWithFormat:@"Keywords=%@",key];
//オペレーション
NSString *ope = @"ItemSearch";
NSString *operation = [NSString stringWithFormat:@"Operation=%@",ope];
//レスポンスグループ
NSString *res = [self urlencode:@"Medium,ItemAttributes,Images"];
NSString *responseGroup = [NSString stringWithFormat:@"ResponseGroup=%@",res];
//サーチインデックス
NSString *search = @"DVD";
NSString *searchIndex = [NSString stringWithFormat:@"SearchIndex=%@",search];
//バージョン
NSString *ver = [self urlencode:@"2009-07-01"];
NSString *version = [NSString stringWithFormat:@"Version=%@",ver];
//署名文字列
NSString *urlString = [NSString stringWithFormat:@"%@&%@&%@&%@&%@&%@&%@&%@",accessKeyId,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];
#import <CommonCrypto/CommonHMAC.h>
//署名作成
unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
const char *cKey = [SECRETKEY cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [forSignString cStringUsingEncoding:NSASCIIStringEncoding];
CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
//署名を付加したRESTリクエスト作成
NSData *HMAC = [[NSData alloc]initWithBytes:cHMAC length:sizeof(cHMAC)];
NSString *hash = [self urlencode:[HMAC stringEncodedWithBase64]];
//リクエストURL
NSString *url = [NSString stringWithFormat:@"http://ecs.amazonaws.jp/onca/xml?%@&Signature=%@",urlString,hash];

1.ゲームのタイトル、カテゴリ、メーカー、ハード、日付、評価、状態、コメントを保存・管理
2.ゲームの各情報ごとに並び替え、分析が可能
3.楽天ブックスGAMEより簡単にゲーム情報が取得可能
4.ゲームタイトルによるインターネット検索(Google,Youtube,Wikipedia)
5.Twitter投稿・タイムライン閲覧機能
6.様々な画面モード(詳細・シンプル・カバーフロー)

![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |

-カバーフローのレスポンスの改善
-映画タイトル検索にTwitter検索を追加
![]() | ![]() |