从 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 获得明确的响应的主要内容,如果未能解决你的问题,请参考以下文章

使用 AFNetworking 未获得完整的响应标头

如何在afnetworking中的AFHTTPRequestOperationManager请求中获得返回

AFNetworking 2 - 请求失败时没有响应正文

JSON + AFNetworking [关闭]

AFNetworking + JSON 并获取服务器状态

AFNetworking + JSON + 进度下载