2010-01-31 3 views
0

Я пытаюсь загрузить HTML-файл из Интернета и сохранить его в своем приложении для последующего (офлайн-просмотра) просмотра. Я использую следующий метод для загрузки файла, но мои NSLogs сообщают, что данные не были загружены. В чем проблема? (Предположим, что активное подключение к Интернету, предположим, предопределенный путь к каталогу локальных документов)Как загрузить файл .html для локального использования?

urlAddress = @"http://subdomain.somesite.com/profile.html"; 


      // Create and escape the URL for the fetch 
      NSString *URLString = [NSString stringWithFormat:@"%@%@", @"ttp://subdomain.somesite.com/profile.html"]; 
      NSURL *URL = [NSURL URLWithString: 
          [URLString stringByAddingPercentEscapesUsingEncoding: 
          NSASCIIStringEncoding]]; 

      // Do the fetch - blocks! 
      NSData *theData = [NSData dataWithContentsOfURL:URL]; 
      if(theData == nil) { 

       NSLog(@"NO DATA DOWNLOADED"); 
      } 

      // Do the write 
      NSString *filePath = [[self documentsDirectory] stringByAppendingPathComponent:@"Profile/profile.html"]; 
      [theData writeToFile:filePath atomically:YES]; 

      NSLog(@"WRITING profile.html to path %@!", filePath); 

ответ

-1

Потому что вы не должны делать stringByAddingPercentEscapesUsingEncoding: вещи, которые превратить URL в недействительное один http%3a%2f%2f ....

Непосредственно использовать

NSData *theData = [NSData dataWithContentsOfURL: 
    [NSURL URLWithString:@"http://subdomain.somesite.com/profile.html"]]; 
+0

Это неправильно, если у вас есть символы в параметре секции URL. Вам нужно будет вызвать stringByAddingPercentEscapesUsingEncoding для этой части URL-адреса, но не префикс http: //. –

+0

Не знаю, изменилось ли это с момента публикации, но вы должны передать объект NSURL этому методу. Например: 'NSData * data = [NSData dataWithContentsOfURL: [NSURL URLWithString: @" http://www.google.com/index.html "]]; – polyclick

Смежные вопросы