AFNetworking说“无法解析响应”

时间:2014-10-28 14:55:28

标签: ios8 afnetworking

我正在向服务器发送请求,该服务器正在处理请求和响应。但是在我的应用程序上,我收到了:

Error Domain=NSURLErrorDomain Code=-1017 "cannot parse response" UserInfo=0x167668d0     
{NSErrorFailingURLStringKey=https://***, _kCFStreamErrorCodeKey=-1, 
NSErrorFailingURLKey=https://***/, NSLocalizedDescription=cannot
parse response, _kCFStreamErrorDomainKey=4, NSUnderlyingError=0x16731990 "cannot parse
response"

http请求中的接受字段就足够了。

我甚至无法看到messege到达了什么,因为NSHTTPURLResponse对象为空。

什么可能是一个问题,以什么方式我可以看到什么消息不会使用wireshark之​​类的东西。

谢谢!

6 个答案:

答案 0 :(得分:8)

我遇到了同样的问题,原因是API需要 GET http方法,我需要传递参数,我通过以下代码发送:

[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];

当我使用 GET 方法执行请求时,它会报告错误。

我的解决方案是当API需要 GET 方法时,当API方法为 POST 时,该参数应添加到网址上,例如http://apiserver/api?paramName=paramValue,然后使用上面的代码,为请求对象设置HTTPBody。

答案 1 :(得分:4)

如果iOS无法解析响应,则问题必须是来自服务器的不正确格式的http响应,即使您被说,一切都是100%正确,因为其他服务与之通信。

在我的情况下,Android应用程序成功通信,因为那里使用的网络框架没有那么严格,即使http响应的内容长度不符合实际的数据长度,它也可以读取此消息,与ios不同。 / p>

使用tcpdump检查http通讯!

答案 2 :(得分:4)

当我尝试使用http GET方法而不是http POST调用Web方法时,我遇到了同样的问题。 Web服务方法期望POST请求不是GET。希望这些信息对一些人有所帮助。

答案 3 :(得分:2)

如果您正在使用(iOS8有问题但在iOS7中有效)

NSData *dataToSend = [jsonData dataUsingEncoding:NSUTF16BigEndianStringEncoding] 

要发送到服务器,请按以下方式进行:

NSData *dataToSend = [jsonData dataUsingEncoding:NSUTF8StringEncoding]

答案 4 :(得分:1)

我看到了这个错误,因为我正在使用的框架试图在JSON编码正文中的GET请求中发送URL参数(而不是URL字符串中的URL编码参数)。这导致服务器发回"无效参数消息"客户无法处理,而是在请求中止。从身体参数切换到GET请求的URL编码参数解决了这个问题。

答案 5 :(得分:0)

首先,我会确保您在正文和标题中发送正确的参数。我收到了这个错误,在将其中一个参数从主体移动到标题后,我收到了正确的响应。

如果有api的任何文档,请确保您正确地遵循它。