NSURLRequest requestWithURL:仅在我访问Mobile Safari中的页面后才能在设备上运行

时间:2010-07-30 09:00:10

标签: iphone objective-c cocoa-touch

我有以下代码:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.lenzerheide.com/modules/weather/iphoneweather.php"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval: 10.0f];

[[NSURLConnection alloc] initWithRequest:request delegate:self];

当我在iPhone上测试应用程序时,在某些手机上(可能是那些最近没有访问过移动版Safari中的页面的应用程序),didFailWithError会被“连接终止”调用,而不是一次,但总是如此。但是,当我访问移动旅游网站时,这个问题似乎完全消失了几个小时。我甚至可以删除该应用程序,重新安装它,问题仍然存在。似乎需要花费几个小时直到这个问题重新出现,并且它是相同的程序,它只在我首先访问移动safari中的站点后才加载XML。如果我不这样做,则会一直调用didFailWithError。

哦,顺便说一下,托管xml的网页总是有效。我可以在我的Mac上加载XML而没有任何问题甚至滞后。就在最近没有访问过移动版Safari中的页面的iPhone上,我看到了问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为您的超时会在页面打开之前提前触发,当您第一次尝试访问该页面时,移动设备上的DNS分辨率可能会比预期的时间长一些,当您第一次访问移动版Safari时,还会显示dns for第一次将花费更长的时间,但移动野生动物园可能会有更高的超时时间。下次从您的应用程序访问该页面时,dns解析将不会花费任何时间,因为它将从缓存中提取一小段超时通常为2到48小时(取决于dns服务器的超时值)。因此,在访问移动safari中的页面以获取超时值后,您的xml可能会加载更快并且超出您的超时值。

因此,尝试增加超时值或忽略超时值,然后查看。