无法理解使用 AFNetworking 在服务器中发布数据的响应
Posted
技术标签:
【中文标题】无法理解使用 AFNetworking 在服务器中发布数据的响应【英文标题】:Can't understand the response of posting data in the server using AFNetworking 【发布时间】:2016-02-25 10:17:22 【问题描述】:我使用 AFNetworking 将包含设备中联系人详细信息的数组发布到服务器。我不明白我收到的回复。下面是我的代码。
NSDictionary *parameters = @@"UserContacts": contactsArray;
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] init];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager POST:baseUrl parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject)
NSLog(@"RESPONSE : %@",responseObject);
failure:^(NSURLSessionDataTask *task, NSError *error)
NSLog(@"Error: %@", error.localizedDescription);
];
回复是
RESPONSE : <4e6f2044 61746120 55706c6f 61646564>
谁能解释一下这个响应是什么。这是ios还是php的问题。提前致谢。
【问题讨论】:
表示“未上传数据”。这就是你通过[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]
获得的。但是您似乎对序列化程序设置有疑问。
你得到的响应是 NSData 格式,你需要把它转换回 UTF8。
【参考方案1】:
去掉这行试试
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
希望对你有帮助!
【讨论】:
错误:操作无法完成。 (可可错误 3840。) Cocoa 错误 3840 是 JSON 解析错误(如果您在 Stack Overflow 上搜索它,您会遇到这个现有问题)。我建议您通过 JSON 验证器从您的 Web 服务运行输出 JSON,以检查它实际上是否符合规范。【参考方案2】:在success
回调中放置断点,当它命中时,调试区域将显示responseObject
变量的内容。
【讨论】:
【参考方案3】:你需要改变
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
到
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/json"];
我使用 AFNetworing 调用 API 的方式是
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @@"action": @"actionOfAPI",
@"Param1": Param1,
@"Param2": Param2;
[manager GET/POST:kBaseUrl parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"Response: %@", responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
];
如果您遇到同样的错误,那么只需在您的项目中搜索“text/json”并在 AFNetworking 类中的所有位置进行如下更改。
self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil];
【讨论】:
以上是关于无法理解使用 AFNetworking 在服务器中发布数据的响应的主要内容,如果未能解决你的问题,请参考以下文章