Objective c NSURLConnection有时会失败-服务器无法访问?

Objective c NSURLConnection有时会失败-服务器无法访问?,objective-c,nsurlconnection,Objective C,Nsurlconnection,如何检测NSURLConnection故障是否是由于无法访问服务器造成的 我检查了服务器的日志,在这些情况下,当NSURLConnection失败时,没有提到应用程序的调用。但是,尝试启动NSURLConnection(见下文)是否会因为其他原因而失败 我使用以下init函数通过包装器实现对NSURLConnection的调用: -(id)initWithURL:(NSURL*)url postData:(NSData*)postData responseData:(NS

如何检测NSURLConnection故障是否是由于无法访问服务器造成的

我检查了服务器的日志,在这些情况下,当NSURLConnection失败时,没有提到应用程序的调用。但是,尝试启动NSURLConnection(见下文)是否会因为其他原因而失败

我使用以下init函数通过包装器实现对NSURLConnection的调用:

-(id)initWithURL:(NSURL*)url
        postData:(NSData*)postData
    responseData:(NSMutableData*)responseData
        delegate:(id)delegate
    doneSelector:(SEL)doneSelector
   errorSelector:(SEL)errorSelector {

    if(self=[super init]) {
        _url = [url retain];
        _postData = [postData retain];
        _responseData = [responseData retain];
        _delegate = [delegate retain];
        _doneSelector = doneSelector;
        _errorSelector = errorSelector;

        // Set up request
        NSMutableURLRequest* request = [[[NSMutableURLRequest alloc] init] autorelease];
        [request setURL:_url];
        [request setHTTPMethod:@"POST"];
        [request setValue:[NSString stringWithFormat:@"%d",[_postData length]] forHTTPHeaderField:@"Content-Length"];
        [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
        [request setHTTPBody:_postData];

        // Kick off the connection
        NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
        if(!connection) {
            [_delegate performSelector:_errorSelector];
        }
    }
    return self;
}
我们在测试过程中从未遇到过这个问题(99%的时候URL连接对我们的用户来说都是完美无瑕的),所以我无法确切说出NSURLConnection失败的地方。但是我知道当它失败时,
errorSelector
会被一个空的
\u responseData
字符串调用

在上面的代码中,您是否看到有什么东西在极少数情况下可能会失败

知道如何找到连接失败的原因吗


提前谢谢

为什么不实现
connection:didFailWithError:
并让iOS告诉它失败的确切原因?谢谢@Avi,这听起来是一个非常合理的想法。如果
initWithRequest
失败并且返回的连接为零,我如何找到错误消息?(我假设只有在传输过程中才能触发
didFailWithError
事件)。