iphone - 将 NSData 加载到 UIWebView

标签 iphone html ios uiwebview nsurlconnection

在我的网络浏览器中,我试图用从 NSURLConnection 获得的 NSData 加载一个 UIWebView。当我尝试将它加载到 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

最佳答案

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

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

关于iphone - 将 NSData 加载到 UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475768/

相关文章:

javascript - HTML 表格行中第二列的 jQuery 选择器

html - 表格转换成div

ios - Tableview 未加载/触发

iOS:通过电子邮件的 Firebase 邀请不起作用

iphone - 如何使用 UIGestureRecognizer 检测圆周运动

iphone - 引导某人进行 OTA 更新

iphone - iPhone Voip中的扬声器电话功能

iphone - CAAnimation -1 重复计数?

html - 小型设备上 Bootstrap 中的网格对齐

ios - 将 subview 添加到 self.tableView.tableHeaderView 不起作用