如何计算在iphone中的UIWebView中加载url所需的时间?

时间:2012-07-28 08:14:43

标签: iphone uiwebview timeout nsurlconnection

他们是否可以找到在UIWebView上加载任何网址所需的时间?

实际上我的问题是,如果我的网址加载 10分钟,则显示超时错误。

实际上我使用了一些代码来加载我的第一个url,但我的第一个加载url重定向到另一个url,这需要花费太多时间来加载。

这是我用来加载我的第一个网址的代码。

  NSURL *url = [NSURL URLWithString:urlAddress];
  NSURLRequest *requestObj=[NSURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageNotAllowed timeoutInterval:10];
  [webView loadRequest:requestObj];

如何查找加载重定向网址所需的时间?

3 个答案:

答案 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];
  }