【问题标题】:iPhone API for Accessing Amazon S3 REST API用于访问 Amazon S3 REST API 的 iPhone API
【发布时间】:2011-03-11 01:08:54
【问题描述】:

是否有人对通过 iPhone 使用他们的 REST API 从 Amazon S3 服务获取或发布到 Amazon S3 服务有任何建议。看起来不可能,但我可能读错了文档。

提前感谢您的帮助!

L.

【问题讨论】:

  • 为什么看起来不可能?毕竟它只是一个 REST API。
  • 据我所知,唯一用于访问 S3 的基于 Cocoa/Cocoa Touch 的工具包是 ConnectionKit。否则,您将被困在自己的构建中,这可能会成为一项相当复杂的任务。请问您需要 API 的哪些部分? ConnectionKit 的当前版本确实支持 S3,但有点笨拙。我们目前正在编写 2.0 版本。如果我们有人专门为一个协议工作,我们现在可以只专注于那个,以实现我们的互惠互利。如果有兴趣,请通过mikeabdullah.net/other/contact_me.html与我联系以进行进一步讨论
  • 看起来不可能的原因是,对 S3 服务器的每个经过身份验证的请求都需要生成一个 RFC 2104HMAC-SHA1 签名并与请求一起发送。据我所知,目前没有办法在 iPhone 上执行此操作。我是不正确还是只是遗漏了什么?
  • iPhone 上的 CCHMAC(3) 提供了所需的功能
  • 谢谢迈克。我刚写完最后一条评论,就遇到了那个确切的库。我没有意识到它在里面。这正是我要做的。再次感谢您!

标签: iphone cocoa-touch rest amazon-s3


【解决方案1】:

在一般情况下,我建议使用ASIHttpRequest,它有很多内置功能(也兼容 REST)和很多东西,比使用 NSURLConnection 更轻松。

它还有开箱即用的S3 support

【讨论】:

  • 我觉得你有点困惑。 NSConnection 用于分布式对象。和 NSURLConnection 很不一样!
  • 是的,你是对的,我的意思是 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 变量应该存储在实例变量中,但总体思路应该适合您。您可能还需要设置一些请求标头来告诉服务器正文数据采用什么编码等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    相关资源
    最近更新 更多