将NSData加载到UIWebView中

Gre*_*reg 9 html iphone uiwebview nsurlconnection ios

在我的网页浏览器,我试图加载UIWebViewNSData从获得的NSURLConnection.当我尝试将其加载到UIWebView而不是网站时,它会提供HTML纯文本.

这是我的代码:

viewDidLoad:

NSURLRequest *request = [NSURLRequest requestWithURL: [NSURL URLWithString:@"http://www.msn.com"]];
[NSURLConnection connectionWithRequest: request delegate:self];
Run Code Online (Sandbox Code Playgroud)

稍后在代码中:

 -(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];
  }
Run Code Online (Sandbox Code Playgroud)

UIWebView加载纯HTML而不是加载页面

Ind*_*ore 14

您没有附加您收到的数据.使用这段代码

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

根据您的数据长度,可能会调用此方法一次或多次.因此,不是将新数据分配给您的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];
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这节省了我的一天!但是,`baseURL:nil`很糟糕:http://stackoverflow.com/q/32763248/1289683 (3认同)