无法理解使用 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 在服务器中发布数据的响应的主要内容,如果未能解决你的问题,请参考以下文章

无法在 iOS 应用程序中使用 AFNetworking

AFNetworking:使用 IP 地址,应用程序无法访问服务器

无法使用 AFNetworking 将阵列发布到服务器

AFNetworking 向 JSON 响应键添加引号

AFNetworking 2 无法使用自签名证书

PHAsset + AFNetworking。无法在真机上上传文件到服务器