他们是否可以找到在UIWebView
上加载任何网址所需的时间?
实际上我的问题是,如果我的网址加载 10分钟,则显示超时错误。
实际上我使用了一些代码来加载我的第一个url,但我的第一个加载url重定向到另一个url,这需要花费太多时间来加载。
这是我用来加载我的第一个网址的代码。
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj=[NSURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageNotAllowed timeoutInterval:10];
[webView loadRequest:requestObj];
如何查找加载重定向网址所需的时间?
答案 0 :(得分:1)
试试这个:
@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
}
答案 1 :(得分:1)
您可以在调用[webView loadRequest:requestObj];
时立即启动计时器,并在 - webViewDidFinishLoad:
的委托方法实现中停止该计时器,并且超时间隔以秒为单位,而不是以分钟为单位。 ..
但是我不认为你应该这样做,因为所用的时间并不总是恒定的,因为这取决于服务器响应的速度,这取决于特定时间的流量......
所以它可能在3秒内完成加载,或者甚至可能需要3分钟..所以我的建议是给出大量的时间间隔,但也显示网络连接指示.... 希望这会有所帮助。
答案 2 :(得分:1)
你可以这样做
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];
}