1

次のコード行を使用して、html ページをダウンロードして保存しています::

NSURL *goo = [[NSURL alloc] initWithString:@"http://www.google.com"];
NSData *data = [[NSData alloc] initWithContentsOfURL:goo]; 
NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; //Remove the autorelease if using ARC

NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSLog(@"%@", documentsDirectory);
NSString *htmlFilePath = [documentsDirectory stringByAppendingPathComponent:@"file.html"];
[html writeToFile:htmlFilePath atomically:YES encoding:NSUTF8StringEncoding error:nil];

ダウンロードして保存した後、再利用する必要があります。つまり、アップロードします。しかし、css ファイルと画像ファイルを html ページと一緒にダウンロードできません。

誰かが問題を解決するのを手伝ってくれますか?? ありがとうございます。

4

4 に答える 4

0
- (void)viewDidLoad {
/// js=yourHtmlSring;
 NSString *js;  (.h)
 [self.myWebView loadHTMLString:js baseURL:nil];
 }

//委任

- (void)webViewDidFinishLoad:(UIWebView *)webView {
[myWebView stringByEvaluatingJavaScriptFromString:js];
 }`
于 2012-06-19T10:06:29.133 に答える
0

ASIWebPageRequestを使用すると問題が解決します。

  - (void)downloadHtml:(NSURL *)url
 {
   // Assume request is a property of our controller
   // First, we'll cancel any in-progress page load
   [[self request] setDelegate:nil];
   [[self request] cancel];

   [self setRequest:[ASIWebPageRequest requestWithURL:url]];
   [[self request] setDelegate:self];
   [[self request] setDidFailSelector:@selector(webPageFetchFailed:)];
   [[self request] setDidFinishSelector:@selector(webPageFetchSucceeded:)];

   // Tell the request to embed external resources directly in the page
   [[self request] setUrlReplacementMode:ASIReplaceExternalResourcesWithData];

   // It is strongly recommended you use a download cache with ASIWebPageRequest
   // When using a cache, external resources are automatically stored in the cache
   // and can be pulled from the cache on subsequent page loads
   [[self request] setDownloadCache:[ASIDownloadCache sharedCache]];

   // Ask the download cache for a place to store the cached data
   // This is the most efficient way for an ASIWebPageRequest to store a web page
   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
   NSString *documentsDirectory = [paths objectAtIndex:0];
   [[self request] setDownloadDestinationPath:documentsDirectory] // downloaded path
   //[[ASIDownloadCache sharedCache] pathToStoreCachedResponseDataForRequest:[self request]]]; use this instead of documentsDirectory if u want to cache the page

   [[self request] startAsynchronous];
}

//These are delegates methods:
- (void)webPageFetchFailed:(ASIHTTPRequest *)theRequest
{
  // Obviously you should handle the error properly...
  NSLog(@"%@",[theRequest error]);
}

- (void)webPageFetchSucceeded:(ASIHTTPRequest *)theRequest
{
   NSString *response = [NSString stringWithContentsOfFile:
   [theRequest downloadDestinationPath] encoding:[theRequest responseEncoding] error:nil];
   // Note we're setting the baseURL to the url of the page we downloaded. This is important!
  [webView loadHTMLString:response baseURL:[request url]];
}
于 2012-06-19T08:59:54.100 に答える
0

Google からすべてのファイルをダウンロードできるとは思えません。他の URL を試してみてください。NSDataそして、ファイルに直接書き込むことができますhtmlFilePath

[data writeToFile:htmlFilePath atomically:YES];
于 2014-03-11T06:12:56.283 に答える
0

ダウンロードされるデータは、Web サーバーが返すもの、つまり純粋な html です。内部からのリソースが必要な場合 - images/sounds/flash/css/javascripts/etc.. この html を解析し、他のすべてのリソースをダウンロードします。html にはこれらのリソースのフル パスが含まれている場合もあるため、変更が必要になる場合があります。 URL が相対的であること (オフラインで表示するか、別のサーバーにアップロードする場合)。解析は、正規表現または Web ページ全体をダウンロードできる他のサードパーティのパーサーまたはライブラリを使用して行うことができます... Webサイト全体をダウンロードできると主張しているASIWebPageRequest
をご覧になることもできますが、私は試していません。この機能...

于 2012-06-19T08:37:06.353 に答える