2014-03-27 71 views
0

我想從url下載圖像並獲取響應對象的NSData。AFNetworking圖像下載不使用AFImageRequestOperation

這是我的設置操作:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 

AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer]; 
responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"image/jpeg"]; 
manager.responseSerializer = responseSerializer; 

AFHTTPRequestSerializer *requestSerializer = [AFHTTPRequestSerializer serializer]; 
[requestSerializer setValue:@"image/jpeg" forHTTPHeaderField:@"Accept"]; 
[requestSerializer setValue:@"image/jpeg" forHTTPHeaderField:@"Content-Type"]; 
manager.requestSerializer = requestSerializer; 

[manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 

    NSData *data = responseObject; 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

}]; 

響應對象總是零,網址是正確的,在瀏覽器openned時它顯示圖像時,操作的描述示出了內容長度和內容類型(image/jpeg),但響應對象似乎沒有選取它。

謝謝

答:代替responseObject,operation.reponseData需要使用。

+0

@AdamEberbach它不是重複的,它不是一回事。 – zevonja

+0

你是否在失敗塊中訪問'operation.reponseData'? – vikingosegundo

+0

在成功塊中,不會發生錯誤。 – zevonja

回答

3

您需要告訴AFNetworking您期望的圖像數據和應該被反序列化。

manager.responseSerializer = [AFImageResponseSerializer serializer]; 

AFImageResponseSerializer Class Reference

默認情況下,AFImageSerializer接受以下MIME類型, 對應於由的UIImage或NSImage中所支持的圖像格式:

image/tiff 
image/jpeg 
image/gif 
image/png 
image/ico 
image/x-icon 
image/bmp 
image/x-bmp 
image/x-xbitmap 
image/x-win-bitmap 

答:代替responseObject,需要使用operation.reponseData。

如果你將用戶正確的序列化,它會被responseObject,轉換成一個對象,你可以立即使用。 operation.reponseData包含從服務器發送的原始數據。通常這不是你所需要的。

+0

我已經告訴AFnetworking我期望有一個數據鏡像,請參閱響應序列化程序?並且操作認識到圖像在響應中,它不會將圖像數據放入響應對象中。我在此期間解決了這個問題。將立即更新答案。 – zevonja

+0

但爲什麼你跳過把它變成一個圖像對象? – vikingosegundo