他们有没有办法找到在UIWebView
上加载任何url所需的时间?
事实上,我的问题是,如果我的url加载时间超过10分钟,就会显示超时错误。
事实上,我用了这段代码来加载我的第一个url,但我的第一次加载url重定向到另一个url,这需要太多时间来加载。
这是我用来加载我的第一个url的代码。,
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj=[NSURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageNotAllowed timeoutInterval:10];
[webView loadRequest:requestObj];
如何查找加载重定向url所花费的时间?
你可以这样做
double timeOutTime = 60*10; //10 mins
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj=[NSURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageNotAllowed timeoutInterval:10];
[self performSelector:@selector(timeOutMethod) withObject:nil afterDelay:timeOutTime];
[webView loadRequest:requestObj];
- (void)timeOutMethod {
///do what ever you want to do
}
在这种方法中,您可以取消上述请求
- (void)webViewDidFinishLoading:(UIWebView *)webView {
// This will cancel the previous request.
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(timeOutMethod) object:nil];
}
您可以在调用[webView loadRequest:requestObj];
后立即启动计时器。。并在–webViewDidFinishLoad:
的委托方法实现中停止该计时器,并且超时间隔以秒为单位,而不是以分钟为单位。。。。
但我认为你不应该这样做,因为所花费的时间并不总是恒定的,因为这取决于服务器的响应速度,这是基于特定时刻的流量。。。
因此它可能在3秒内完成加载,甚至可能需要3分钟。。因此,我的建议是给出大量的超时间隔,但也要显示网络连接指示器。。。。希望这能有所帮助。
试试这个:
@interface Foo: NSObject <UIWebViewDelegate> {
NSDate *startDate;
}
// etc. In the implementation:
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageNotAllowed timeoutInterval:10];
webView.delegate = self;
[webView loadRequest:requestObj];
startDate = [[NSDate date] retain];
- (void)webViewDidFinishLoading:(UIWebView *)webView
{
NSTimeInterval loadTimeInSeconds = [[NSDate date] timeIntervalSinceDate:startDate];
// do what you want to it
}