从 AFNetworking 2.4.1 获得明确的响应
Posted
技术标签:
【中文标题】从 AFNetworking 2.4.1 获得明确的响应【英文标题】:Get plain response from AFNetworking 2.4.1 【发布时间】:2014-09-24 10:32:37 【问题描述】:我正在发送一个 POST 请求:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSDictionary *parameters = @@"method": @"login", @"email":@"email", @"password":@"password";
[manager POST:@"http://www.apiwebsite.com" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"JSON: %@", responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
];
我的响应对象是:
JSON:
但是用 POSTMAN 调用 api 我得到:
"响应":"OK", "id":"1234223123"
如何获得普通或 JSON 响应以使用它? 谢谢!
【问题讨论】:
【参考方案1】:要获取 JSON 对象,请使用正确的序列化程序 AFJSONResponseSerializer
而不是您现在使用的 AFHTTPResponseSerializer
。
出于调试目的,将NSData
转换为NSString
NSLog(@"JSON: %@", [[NSString alloc] initWithData: responseObject encoding:NSUTF8StringEncoding]);
【讨论】:
如果我使用AFJSONResponseSerializer
我得到:Error: Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html" UserInfo=0x8c47a60
@pekpon 你设置requestSerializer
了吗?
问题是AFJSONResponseSerializer
只接受application/json - text/json - text/javascript
而我正在接收"Content-Type" = "text/html";
@pekpon 你是对的,但是与请求的 Accept 标头相关的响应类型,请参阅 AFNetworking 内部如何工作,或谷歌关于 http 中的接受标头以上是关于从 AFNetworking 2.4.1 获得明确的响应的主要内容,如果未能解决你的问题,请参考以下文章