2014-03-01 37 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