我意识到这是一个模糊的问题,但我想知道是否还有其他人观察过这个问题。这是我调用NSURLConnection
的代码 // Get data from server
NSString *host = @"www.hostname.com";
NSString *urlString = [NSString stringWithFormat:@"/theRestOfTheURL"];
NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:host path:urlString];
DLog(@"URL is %@", url);
// Create the NSMutableData to hold the received data.
// receivedData is an instance variable declared elsewhere.
receivedData_ = [[NSMutableData data] retain];
NSURLRequest *theRequest=[NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:15.0];
// create the connection with the request
// and start loading the data
self.powerPlantDataConnection = [[[NSURLConnection alloc] initWithRequest:theRequest delegate:self] autorelease];
[url release];
当我第一次加载应用程序时它工作正常,我可以反复调用它而没有任何问题。但如果我关闭应用程序并重新打开它,
(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
每次调用委托方法,请求超时错误消息。我有两个不同的视图控制器,我调用两个不同的URL,并且每次关闭并重新打开应用程序后都会失败。
任何人都可以想到为什么会发生这种情况的原因吗?我不知道从哪里开始寻找。什么可能是请求超时错误的原因?请求应该没有任何问题,因为它在我第一次运行应用程序时起作用。
编辑添加,似乎我的设备上只有这个问题,而不是模拟器上。
答案 0 :(得分:3)
希望你分享了一些chrash日志(尤其是清晰的定义,如
[error localizedDescription]
类方法..)
如你所说,它会超时(你的要求)。而且由于你创建对象的方式过于混乱,你可以使系统的工作更大。我建议在下载数据时使用GCD,特别是在像你这样的情况下,使用不同的接口和网址。
建议 您可以像这样创建您的网址对象:
NSURL *url = [NSURL urlWithString:[NSString stringWithFormat:@"http://%@/%@?key1=%@&key2=%@", yourDomain, targetFile, value1, value2]];
答案 1 :(得分:0)
我切换到使用ASIHTTPRequest,这改善了一些事情,但是我仍然会遇到每次尝试刷新时都会出现错误的情况。我看了一下,问了一下,最终发现禁用TestFlight的电话解决了我的问题。更多信息:
ASIHTTPRequest request times out
在这里: