我想从url下载图像并在响应对象中获取NSData。
这是我设置操作的方式:
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) {
}];
响应对象总是为nil,url是正确的,当在浏览器中打开它显示图像时,操作描述显示内容长度和内容类型(image / jpeg),但响应对象似乎没有选择它了。
谢谢
答案:而不是responseObject,需要使用operation.reponseData。
答案 0 :(得分: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包含从服务器发送的原始数据。通常它不是你需要的。