【问题标题】:AFNetworking image download without using AFImageRequestOperation不使用 AFImageRequestOperation 的 AFNetworking 图像下载
【发布时间】:2014-05-07 04:26:30
【问题描述】:

我想从 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 正确,在浏览器中打开时显示图像,操作描述显示内容长度和内容类型(图像/jpeg),但响应对象似乎没有拾取它.

谢谢

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

【问题讨论】:

  • @AdamEberbach 这不是重复的,不是一回事。
  • 你访问失败块中的operation.reponseData吗?
  • 在成功块中,没有错误发生。
  • 你不反序列化它的原因是什么?
  • 你可以试试SDWebImage,很容易做这样的操作。 github.com/rs/SDWebImage

标签: ios objective-c cocoa-touch asynchronous afnetworking-2


【解决方案1】:

您需要告诉 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

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

如果您使用正确的序列化,它将是 responseObject,转换为您可以立即使用的对象。 operation.reponseData 包含从服务器发送的原始数据。通常它不是你需要的。

【讨论】:

  • 我已经告诉 AFnetworking 我需要一个数据图像,看到响应序列化程序了吗?并且操作识别出图像在响应中,它不会将图像数据放入响应对象中。我在此期间解决了它。现在将更新答案。
  • 但是你为什么要跳过把它变成一个图像对象呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多