2009-06-16 59 views
0

有没有人对通过iPhone使用其REST API获取或发布到Amazon S3服务有任何建议。它看起来不可能,但我可能正在阅读错误的文档。用于访问Amazon S3 REST API的iPhone API

非常感谢您的帮助!

L.

+0

为什么看起来不可能?毕竟它只是一个REST API。 – Kekoa 2009-06-16 22:56:25

+0

据我所知,用于访问S3的唯一基于Cocoa/Cocoa Touch的工具包是ConnectionKit。否则,你会被困在建立自己的,这可能会变得相当复杂的任务。 我可以问你需要哪些API的位? ConnectionKit的当前版本确实支持S3,但有点rope。。我们目前正在编写2.0版本。如果我们有人专门为一个协议而工作,那么我们现在可以把精力集中在目前我们的共同利益上。如果感兴趣,请通过http://mikeabdullah.net/other/contact_me.html与我联系以获得进一步讨论 – 2009-06-17 23:41:20

回答

3

在一般情况下,我建议使用ASIHttpRequest,它具有很多内置功能(REST兼容)以及许多事情,使得生活比使用NSURLConnection更容易。

它也有S3 support开箱。

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变量应该存储在一个实例变量,但总的思路应该为你工作。您可能还需要设置一些请求标头来告诉服务器身体数据的编码等等。