2009-06-16 3 views
0

iPhone을 통해 REST API를 사용하여 Amazon S3 서비스에서 GET하거나 POST 할 수있는 제안이있는 사람이 있습니까? 가능한 것처럼 보이지 않지만 잘못된 문서를 읽을 수 있습니다.Amazon S3 REST API에 액세스하기위한 iPhone API

도움을 주셔서 감사합니다.

L.는

+0

왜 보이지 않습니까? 결국 REST API 일뿐입니다. – Kekoa

+0

내가 아는 한, Cocoa/Cocoa Touch 기반의 S3 전용 툴킷은 ConnectionKit입니다. 그렇지 않으면 자신 만의 건물을 만들 수 있습니다. 복잡한 작업이 될 수 있습니다. API의 어느 비트가 필요한지 묻습니다. ConnectionKit의 현재 릴리스는 S3를 지원하지만 비트 로피입니다. 현재 2.0 버전을 작성 중입니다. 우리가 특정 프로토콜에 대해 구체적으로 작업 할 사람이 있다면, 우리는 지금 당장은 상호 이익에 초점을 맞출 수 있습니다. 관심이있는 경우 자세한 논의는 http://mikeabdullah.net/other/contact_me.html에 문의하십시오. –

+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 변수가 인스턴스 변수에 저장해야 없지만, 일반적인 생각은 당신을 위해 작동합니다. 본문 데이터가 어떤 인코딩인지 등을 서버에 알리기 위해 일부 요청 헤더를 설정해야 할 수도 있습니다.