将NSData加载到UIWebView中

时间:2012-02-28 02:53:47

标签: iphone html ios uiwebview nsurlconnection

在我的网络浏览器中,我正在尝试加载UIWebView,其中NSData来自NSURLConnection。当我尝试将其加载到UIWebView而不是网站时,它会显示HTML纯文本。

这是我的代码:

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 个答案:

答案 0 :(得分:14)

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

-(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];
}