【发布时间】:2014-01-14 16:37:19
【问题描述】:
在尝试了几乎所有关于该主题的回复后,我都没有找到解决问题的有效答案。
问题:所以我在从AFNetworking 1.3 移植后使用AFNetworking 2.0.3 实现了我的应用程序的上传部分:
-(void)commandWithParams:(NSMutableDictionary*)params onCompletion:(JSONResponseBlock)completionBlock {
NSData* uploadFile = nil;
if ([params objectForKey:@"file"]) {
uploadFile = (NSData*)[params objectForKey:@"file"];
[params removeObjectForKey:@"file"];
}
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"http://54.204.17.38"]];
manager.responseSerializer = [AFJSONResponseSerializer serilizer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"];
AFHTTPRequestOperation *apiRequest = [manager POST:@"/API" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
if (uploadFile) {
[formData appendPartWithFileData:uploadFile name:@"file" fileName:@"photo.jpg" mimeType:@"image/jpeg"];
}
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
completionBlock(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
completionBlock([NSDictionary dictionaryWithObject:[error localizedDescription] forKey:@"error"]);
}];
[apiRequest start];
}
我在使用此代码时遇到的错误是“请求失败:不可接受的内容类型:text/html”在我的浏览器中检查了“MIME type: application/json”的响应标头之后。另外,我也在我的 API 顶部使用了 'header('Content-type: application/json')'(PHP API)。现在,如果我将序列化类型更改为“AFHTTPResponseSerializer”而不是“AFJSONResponseSerializer”,它不会吐出JSON error,但它会给我一个不同的错误(随机无法识别的选择器错误)。
对于为什么我似乎无法通过这种方法获得JSON 响应有什么想法吗?
【问题讨论】:
标签: ios objective-c json content-type afnetworking-2