2016-08-18 7 views
0

미리 지정된 URL과 AFNetworking 3.0을 사용하여 S3에서 이미지를 가져 오는 데 문제가 있습니다. NSMutableURLRequestNSURLSession을 사용하여 이미지를 얻을 수 있지만 AFHTTPSessionManager과 같은 NSMutableURLRequest을 사용할 때 403 오류가 발생합니다. (실제로는 403 오류를주는 setImageWithURLRequest를 호출하여 이미지를로드하려고하지만 을 사용하여이 코드를 작성하여 문제를 디버그하려고했습니다.) AFNetworking과 함께 무엇을 잘못 수행 할 수 있습니까?NSURLSession에서 GET이 성공했지만 AFHTTPSessionManager에서 실패했습니다

let request = NSMutableURLRequest() 
request.HTTPMethod = "GET" 
request.URL = coverPhotoUrl // A presigned url to an image on S3 

// The operation succeeds if I uncomment the NSURLSession line 
// and comment out the AFHTTPSessionManager line. 
//NSURLSession.sharedSession().dataTaskWithRequest(request) { 
AFHTTPSessionManager().dataTaskWithRequest(request) { 
    date, response, error in 
    if let error = error { 
     Log.error?.message("request failed: \(error.localizedDescription)") 
    } else { 
     Log.debug?.message("request succeeded.") 
    } 
} 
.resume() 

답변

0

AFNetworking이 콘텐츠 형식 문제로 인해 요청에 실패했습니다. S3 파일의 내용 유형을 binary/octet에서 image/jpeg로 변경 한 후에 setImageWithURL이 작동했습니다.

콘텐츠 유형을 설정하기 위해 S3를 얻는 것도 어렵습니다. 다른 사람에게 유용 할 경우, S3는 콘텐츠 길이를 지정할 때까지 내 PUT 요청의 콘텐츠 형식을 무시합니다. 실제 파일이 훨씬 길더라도 미리 지정된 URL을 생성 할 때 더미 길이 1을 사용했습니다.