2016-09-13 176 views
1

当按下按钮时,我使用NSURLSession将数据从我的应用程序发布到我的服务器。我可以成功地将数据发送到我的服务器,并在前两次插入到数据库中,但是之后的任何时间,请求都会超时。NSURLSession - 请求超时

我试过:更改会话配置(每个主机的连接,timeoutInterval等),会话配置类型,更改数据发布的方式。

有没有人见过这种行为之前,知道我可以如何解决这个问题?

或者它是服务器的问题?我以为我的服务器最初是关闭的。我无法连接到它,也无法加载某些页面。但是,它只是对我而言。重新启动我的调制解调器后,我可以连接回服务器。我没有任何问题连接到phpMyAdmin。

+1

Show.Your.Code。 – vadian

回答

0

如果问题在路由器重新启动后重现,那么我会考虑Apple的强制门户测试服务器当时是否关闭。

否则,我的怀疑是它是一个网络问题,而不是任何特定于您的应用程序。

  • 很有可能您成功加载的页面来自缓存。

  • 因为您说重新启动调制解调器解决了问题,这可能意味着您的调制解调器停止响应DHCP请求或DNS查找(无论是为您的域还是为强制门户测试域之一)。

  • 也有可能你有一个丢包问题,并且它变得越糟,你的路由器启动和运行的时间越长。这可能会导致一些请求完成而另一些请求失败。

  • 偶尔,我看到了奇怪的行为,当ICMP被阻止过于激进时,与此类似。

  • 当有状态的防火墙失去主意并忘记状态时,我也看到了这一点。

  • 这也可能是由于HTTP/HTTPS连接超过服务器放弃和断开连接的点,如果您的防火墙阻止了指示连接已被远程端关闭的数据包。

但是没有数据包跟踪,没有办法确定。为了得到一个:

  • 如果您的网络代码是在OS X上运行,你可以做到这一点与您的网络接口tcpdump的。

  • 如果你在iOS上这样做,你可以通过有线以太网连接你的计算机,通过Wi-Fi实现网络共享,在桥接接口指向tcpdump,并将iPhone指向该Wi-Fi网络。

无论哪种方式,这可以告诉你,如果有请求,走出去是再也回不来了,更重要的是,他们是什么类型的请求,谁负责回答他们。一旦获得了这些信息,如果问题的根源不明显,则发布包跟踪的链接,我们将添加更多建议。