Загрузка NSData в UIWebView - PullRequest
       20

Загрузка NSData в UIWebView

9 голосов
/ 28 февраля 2012

В моем веб-браузере я пытаюсь загрузить UIWebView с NSData, полученным из NSURLConnection. Когда я пытаюсь загрузить его в UIWebView, а не на сайт, появляется обычный текст HTML.

Вот мой код:

in viewDidLoad:

NSURLRequest *request = [NSURLRequest requestWithURL: [NSURL URLWithString:@"http://www.msn.com"]];
[NSURLConnection connectionWithRequest: request delegate:self];

позже в коде:

 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
  {
     webdata = [NSMutableData dataWithData: data];
  }

 -(void)connectionDidFinishLoading:(NSURLConnection *)connection
  {
    [webview loadData:webdata MIMEType: @"text/html" textEncodingName: @"UTF-8" baseURL:nil];
  }

UIWebView loading plain HTML instead of loading the page

1 Ответ

14 голосов
/ 28 февраля 2012

Вы не добавляете данные, которые вы получаете. Используйте этот кусок кода

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    if (webdata == nil) {
        webdata = [[NSMutableData alloc] init];
    }
    [webdata appendData:data];
}

Этот метод может вызываться один или несколько раз в зависимости от длины ваших данных. Поэтому вместо того, чтобы назначать новые данные вашему ivar, добавьте к нему свои данные, чтобы у вас был полный ответ, а не последний полученный пакет данных.
----------------------------------------------- -------------------------------------------------- -----------------------------------
Обновлено
Или используйте вот так.

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
        webdata = [[NSMutableData alloc] init];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    [webdata appendData:data];
}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
    [mWebView loadData:webdata MIMEType: @"text/html" textEncodingName: @"UTF-8" baseURL:nil];
}
...