2009-06-16 13 views
0

iPhoneを介してREST APIを使用してAmazon S3サービスからGETするか、Amazon S3サービスにPOSTするための提案がありますか?それは可能なように見えませんが、私は間違ったドキュメントを読んでいる可能性があります。Amazon S3 REST APIにアクセスするためのiPhone API

ありがとうございました!

L.

+0

なぜ表示されないのですか?結局のところ、これは単なるREST APIです。 – Kekoa

+0

私の知る限り、S3にアクセスするための唯一のCocoa/Cocoa TouchベースのツールキットはConnectionKitです。さもなければ、あなたは自分自身を構築することに固執しています。それはかなり複雑な作業になる可能性があります。 必要なAPIのビットを尋ねることができますか? ConnectionKitの現在のリリースはS3をサポートしていますが、ビットropeyです。現在、2.0バージョンを作成中です。 1つのプロトコルで具体的に作業する人がいれば、純粋にこれを相互利益に集中することができます。 –

+0

それが不可能と思われる理由は、S3サーバへの認証されたリクエストのそれぞれにRFC 2104HMAC-SHA1署名を生成して送信する必要があるからですその要求と共に私の知る限りでは、現在、iPhone上でこれを行う方法はありません。私は間違っているか何かを逃していますか –

答えて

3

一般的なケースでは、ASIHttpRequestを使用することをお勧めします。これには組み込みの機能(RESTも互換性があります)とたくさんのものがあり、NSURLConnectionよりも使いやすくなっています。

また、S3 supportの梱包材があります。

+0

あなたは少し混乱していると思います。 NSConnectionは分散オブジェクト用です。 NSURLConnectionとはまったく異なります! –

+0

はい、そうです、私はNSURLConnectionを意味しました。回答を更新します。 –

2

あなたがやりたいNSURLRequestのものを使用することができるはずです。

NSMutableData* _data = nil; 

- (IBAction) doIt:(id)sender { 
    NSURL* url = [NSURL URLWithString: @"http://theurl.com/"]; 
    NSMutableURLRequest* req = [NSMutableURLRequest requestWithURL: url]; 
    NSURLConnection* con = [NSURLConnection connectionWithRequest: req delegate: self]; 
    NSData* body = [@"body of request" dataUsingEncoding: NSUTF8StringEncoding]; 

    _data = [NSMutableData new]; 
    [req setHTTPMethod: @"POST"]; 
    [req setHTTPBody: body]; 
    [con start]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [_data appendData: data]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    NSString* result = [[[NSString alloc] initWithData: _data encoding: NSUTF8StringEncoding] autorelease]; 

    // process your result here 
    NSLog(@"got result: %@", result); 
} 

これは、何らかのエラーがそれにチェックし_data変数はインスタンス変数に格納する必要がありませんが、一般的な考え方は、あなたのために働く必要があります。おそらくまた、いくつかのリクエストヘッダを設定して、ボディデータがどのようなエンコーディングであるかをサーバに伝える必要があります。

関連する問題