【问题标题】:NSURLConnection timeout?NSURLConnection 超时?
【发布时间】:2010-11-28 07:38:29
【问题描述】:

我将这个 NSURLConnection 与代表一起使用。

nsconnection = [[NSURLConnection alloc] initWithRequest:request
    delegate:self startImmediately:YES];

问题是网站根本没有响应。什么都没有,只是在空白页面的浏览器中旋转,没有失败。在我的代表中,我处理失败,但是当站点没有响应时,代表不会被调用。关于如何使连接超时的任何想法?

【问题讨论】:

    标签: iphone timeout nsurlconnection


    【解决方案1】:

    您可以在 NSURLRequest 对象中指定超时。一种方法是通过requestWithURL:cachePolicy:timeoutInterval: 方法构造它。 (如果您不想担心那部分,可以传入默认的NSURLRequestUseProtocolCachePolicycachePolicy 参数。)超时是以秒为单位的浮点值,iPhone SDK 中的所有时间间隔基本上都是如此。

    还要确保您的NSURLConnection 的委托已设置并响应connection:didFailWithError: 方法。连接总是在连接完成时调用此方法或connectionDidFinishLoading:

    【讨论】:

    • 当网络服务器发送错误时,委托确实工作并做出响应。在这种情况下,网络服务器什么也不发送。只是旋转。我配置请求方法以添加超时。谢谢
    • 如果你想尝试替代 NSURLStuff,我的一个朋友推荐了 ASIHTTPRequest(google it),它可以免费使用,而且看起来很友好,包括超时功能。
    • 仅供参考,默认为 60 秒。
    • 如果我在与服务器进行 http 调用时设置了飞行模式。我怎么知道请求失败?任何完成块?
    【解决方案2】:

    编辑:此答案现已过时,但在回答日期是准确的。

    我知道这个帖子很旧,但我也遇到了这个问题。这发生在在服务所在的内部网络之外测试应用程序时。该服务最终会超时,但 Apple 要求在超时发生前有 240 秒(4 分钟)的时间。查看此线程以获取有关此问题的更多信息。

    NSMutableURLRequest not obeying my timeoutInterval

    【讨论】:

    • 我相信我通过将 NSCredentials 添加到我的应用程序来解决此问题。无响应是由于服务器请求身份验证,而我没有提供。
    • 这是错误的信息!根据developer.apple.com/library/mac/#documentation/Cocoa/Reference/…默认超时间隔为60秒。
    • @stigi 看起来你在引用 Mac OS 的材料,而 ezekielDFM 是在谈论 iOS。
    • @leukosaima NSUrlRequest 的 iOS 版本的文档(只需将 URL 中的 'mac' 替换为 'ios')还指出默认为 60 秒(虽然我不知道是否stigi 和您发布时就是这种情况,也不是文档声称的内容是否真实)。
    • -1;这个答案确实已经过时了。 timeoutInterval 属性的 240 秒最小值不再存在。
    猜你喜欢
    • 2012-06-06
    • 2011-04-03
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多