如何计算在iphone的UIWebView中加载url所花费的时间



他们有没有办法找到在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
    }

相关内容

  • 没有找到相关文章

最新更新