我有一个非常简单的NSURLConnection调用,在除iOS 5之外的所有iOS版本中都能正常工作。因为这是一个'sendSynchronousRequest'调用,所以在应用程序的任何地方都没有声明NSURL委托(响应应该直接回到这个方法)呼叫)。另外,因为这是一个sendSynchronousRequest,所以app中没有实现'didReceiveData'或其他与NSURL相关的方法。
以下是令人讨厌的代码行:
NSData *response = [NSURLConnection sendSynchronousRequest: serviceRequest returningResponse:nil error:nil];
当我逐步调试调试器中的代码时,我可以确认应用程序正在发送请求,并且服务器正在接收请求。我还可以确认服务器然后将响应发送回客户端。
在升级到iOS 5之前,这一切都运行良好。现在,在更新到iOS5之后,NSData变量(响应)永远不会收到任何内容,并且总是以0字节返回。
除了对iOS5的更新外,根本没有代码更改。
答案 0 :(得分:2)
在iOS 5中对NSURLConnection类进行了一些更改。特别是,已弃用了几个委托方法。我遇到了类似的问题,它是由一个不再被调用的委托方法引起的。如果这听起来像您的问题,请查看正式的委托协议NSURLConnectionDelegate
和NSURLConnectionDataDelegate
。
答案 1 :(得分:0)
使用自定义Web服务器时遇到了同样的问题。问题原因是响应中的标头无效。我改变了:
HTTP / 1.1 200 / OK
为:
HTTP / 1.1 200确定
iOS 5现在接受回复。检查数据包捕获。您可能遇到相同或类似的问题。