代码之家  ›  专栏  ›  技术社区  ›  kubi

nsmutableurl请求不遵守超时间隔

  •  30
  • kubi  · 技术社区  · 14 年前

    我在张贴一个小图片,所以我希望超时间隔短一些。如果图像几秒钟内不发送,它可能永远不会发送。不知为什么我 NSURLConnection 永远不会失败,无论我把 timeoutInterval .

    // Create the URL request
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] 
                                     initWithURL:[NSURL URLWithString:@"http://www.tumblr.com/api/write"]
                                     cachePolicy:NSURLRequestUseProtocolCachePolicy
                                     timeoutInterval:0.00000001];
    
    /* Populate the request, this part works fine */
    
    [NSURLConnection connectionWithRequest:request delegate:self];
    

    我在上设置了一个断点 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 但它永远不会被触发。我的照片继续贴得很好,尽管很小 超时间隔

    3 回复  |  直到 12 年前
        1
  •  49
  •   Heath Borders    12 年前

    a thread on Apple dev forums discussing this issue . 显然,在iPhone操作系统上,setter要求超时间隔至少为240秒(4分钟)。只有当postbody不为空时才会发生这种情况(通常在使用post请求时)。这看起来有点疯狂,但很明显是为了确保请求离开系统,即使WWAN(3G)接口可能需要几秒钟才能唤醒。240秒似乎相当长,因此他们建议设置一个计时器,并在计时器触发时取消异步连接。我知道这看起来很蠢,但这是我唯一一次成功地为发帖请求超时…:

        2
  •  5
  •   brainfree    12 年前

    正如弗朗索瓦上面提到的,240秒似乎一直在工作,直到IOS 6(包括5.1)。现在,这个超时值似乎像预期的那样采用默认值60秒(如果您没有自己显式地设置它),所以如果您有一个可能无意中依赖更长时间的POST请求,您可能需要手动更改超时间隔以使用更大的值。我已经能够为一个POST设置60秒以下和以上的超时,因此60秒标记似乎也不代表对这种请求超时的最小限制。

        3
  •  -2
  •   Suresh Varma    12 年前

    此问题已在IO5中修复,因此您现在不会面临此问题。你的代码会很好地工作