【发布时间】:2014-01-30 20:16:02
【问题描述】:
我正在使用 AFNetworking 2。我有一个 UITableview,每一行都包含一个图像。
问题在于响应类型是image/pjpeg,默认情况下它不是被接受的类型。为了解决这个问题,我在第 599 行附近修改了 AFURLResponseSerialization.m。将此内容类型添加到 self.acceptableContentTypes 声明的末尾。
我不想修改源代码。在 2.x 中是否有适当的方法来执行此操作?
NSString *url = [NSString stringWithFormat:@"%@my/images/%@",BaseUrl,[o objectForKey:@"ID"]];
[cell.imageView setImageWithURL:[NSURL URLWithString:url]
placeholderImage:[UIImage imageNamed:@"placeholder"]
];
这似乎不再起作用:
[AFImageRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"image/jpeg"]]
更新:
我可以使用以下代码看到错误:
NSURLRequest *urlRequest = [NSURLRequest requestWithURL: [NSURL URLWithString: url]];
__weak UITableViewCell *weakCell = cell;
[cell.imageView setImageWithURLRequest:urlRequest
placeholderImage:[UIImage imageNamed:@"placeholder"]
success: ^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
__strong UITableViewCell *strongCell = weakCell;
strongCell.imageView.image = image;
[tableView reloadRowsAtIndexPaths: @[indexPath]
withRowAnimation: UITableViewRowAnimationNone];
NSLog(@"Your image request succeeded!");
} failure: ^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
NSLog(@"Your image request failed...");
NSLog(@"Error: %@", error);
NSLog(@"Error: %@", response);
}
];
这是错误:
Error: Error Domain=AFNetworkingErrorDomain Code=-1016 "Request failed: unacceptable content-type: image/pjpeg"
【问题讨论】:
-
您可能不需要更改代码和子类。事实上,“acceptableContentTypes”是 AFHTTPResponseSerializer 的一个属性,它是 AFImageResponseSerializer 的超类。因此,一旦您创建了 AFImageResponseSerializer,您没有尝试简单地为可接受的内容类型设置新值吗?您可以使用 [serializer setAcceptableContentTypes:[serializer.acceptableContentTypes setByAddingObject:@"image/jpeg"]] 将新的内容类型附加到原始内容类型;我没有测试这个,我只是猜测看代码。你试过这个解决方案了吗?
-
我没有创建
AFImageResponseSerializer,上面的代码就是我的全部。我不知道在执行setImageWithURL时如何修改序列化程序(我知道如何处理AFHTTPRequestOperationManager之类的正常请求)。 -
请参阅下面 David Caunt 的回复。
标签: ios objective-c afnetworking-2