我使用NSURLConnection的与我的局域网上的Web服务进行通信。当使用Xcode模拟器时,一切都按预期工作。但是,使用iPhone时,连接通常会超时(但并非总是)。NSURLConnection的间歇性故障iPhone设备上的LAN
iPhone是通过wifi连接到LAN。我可以一直使用Safari浏览Web服务器(托管Web服务)。
但是,该应用程序大多失败。它返回didFailWithError
函数报告“请求超时”。
该应用程序将间歇性地成功(确切地表现如预期)。我看不到成功或失败的模式。它可能会失败多次,然后成功,然后再次失败(无需重新启动应用程序)。我估计有90%以上的失败率。
网络服务总是收到请求和总是回应。看来设备没有收到或处理响应失败。
我可以看到我的网络没有明显的问题。当然,没有IP地址冲突。
我完全新的应用程序,苹果的Xcode和iPhone。所以这对你来说可能是非常明显的。任何想法,我可以看看解决这个问题?
我目前使用的开发环境如下:
- 的Mac OS X(10.7.4)
- 的Xcode 4(靶向4.3)
- 的iPhone 3GS(5.1.1)
是的,我的代码是问题。手机wifi在当地的咖啡厅工作正常。 Safari一直在我的局域网上工作。我写了一个快速简单的测试应用程序(请求来自ws的文本响应),该应用程序一直运行。我的失败应用程序有两个视图,每个视图都有自己的NSURLConnection。虽然应用程序只有一个活动连接失败,但我将首先将NSURLConnection代码重构为一个类。谢谢。答案接受,但任何进一步的提示赞赏例如我是否应该一次只运行一个查询?它可以在模拟器上使用两个,但... – Polly 2012-08-17 13:14:57
我在异步查询并登录每个委托方法。不涉及授权。我想我需要只有一个NSURLConnection的实例。这就是我现在要尝试的。请说,如果这听起来是一个合理的方向,或者如果还有其他事情想到。 – Polly 2012-08-17 13:28:11
是的,您使用一个NSURLConnection每个Web事务。在我的应用程序中,我实际上已经在NSOperationQueue中排队了数百次提取,并且其工作完美。如果你想看到一个快速简单的方法来看看https://github.com/dhoerl/NSOperation-WebFetches-MadeEasy - 这是一个简单易用的技术,你可以找到。该项目构建了一个可以运行的演示应用程序。 – 2012-08-17 13:41:52