2014-03-01 36 views
1

我目前正试图使用​​NSURLSession下载网页,以便检索下载进度的状态更新。不幸的是,在下载网页之后,当我去加载网页时,会出现视觉问题(缺少图像,缺少javascript,缺少样式等),从而使网页看起来不完整。当直接加载到webView时,一切正确加载。我想知道是否有某种方法(或者我缺少的任何方法)下载网页的所有方面并加载它们,以便我可以加载完整的网页并在页面加载时显示加载栏。NSURLSession未下载完整网页

- (void)loadRequest:(NSURLRequest *)request 
{ 
    NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration]; 
    self.urlSession = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:[NSOperationQueue mainQueue]]; 
    self.downloadTask = [self.urlSession downloadTaskWithRequest:request]; 
    [self.downloadTask resume]; 
} 

    - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)downloadURL 
{ 
    [_webView loadData:[NSData dataWithContentsOfURL:downloadURL] MIMEType:downloadTask.response.MIMEType textEncodingName:downloadTask.response.textEncodingName baseURL:nil]; 
} 
+0

您没有阅读完整的帖子。我在上面指出,我希望能够显示下载进度的加载栏。因此我为什么使用这种方法。我需要知道如何使用这种方法检索所有额外的文件等。加载属性和IMO一样无用。它不提供下载状态并通知您加载完成,即使JavaScript内容仍在加载。 – TheCodingArt

回答

0

我有类似的问题(图像丢失等)。你需要提供一个baseURL。尝试:

[_webView loadData:[NSData dataWithContentsOfURL:downloadURL] MIMEType:downloadTask.response.MIMEType textEncodingName:downloadTask.response.textEncodingName baseURL:downloadTask.response.URL]; 
0

为了显示你必须做出某种变通的装载吧,因为你无法知道正在下载的资源的进度。

许多应用程序使用技巧来模拟正在进行的加载。 下面是一个简单的例子来说明这个想法:

  • 显示加载栏进度30%1秒。
  • 如果请求未完成,则显示进度90%,直到进度结束
  • 当请求结束时,将进度设置为100%。

你可以看看这个开源库,看看它是如何完成的。你可以用类似的方式做到这一点。 https://github.com/ninjinkun/NJKWebViewProgress