2016-08-18 17 views
0

予約済みのURLとAFNetworking 3.0を使用してS3からイメージを取得できません。 NSMutableURLRequestNSURLSessionを使用して画像を取得できますが、AFHTTPSessionManagerと同じNSMutableURLRequestを使用すると403エラーが発生します。 (私は実際に私に403エラーを与えるsetImageWithURLRequestを呼んでイメージをロードしたいのですが、AFHTTPSessionManagerを使って問題をデバッグしようとしています)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ファイルのコンテンツタイプをバイナリ/オクテットからimage/jpegに変更した後、setImageWithURLが機能しました。

コンテンツタイプを設定するS3を取得することも困難でした。それが他の誰にとっても役立つ場合は、コンテンツ長を指定するまで、S3はPUTリクエストのコンテンツタイプを無視しました。私は、実際のファイルがはるかに長いという事実にもかかわらず、あらかじめ設定されたURLを生成するときにダミーの長さ1を使用しました。

関連する問題