将 NSData 加载到 UIWebView

Loading NSData into a UIWebView(将 NSData 加载到 UIWebView)
本文介绍了将 NSData 加载到 UIWebView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的网络浏览器中,我尝试使用从 NSURLConnection 获得的 NSData 加载 UIWebView.当我尝试将其加载到 UIWebView 中时,它会显示 HTML 纯文本,而不是站点.

In my web browser, I am trying to load a UIWebView with NSData obtained from a NSURLConnection. When I try to load it into the UIWebView, instead of the site, it comes up with the HTML plain text.

这是我的代码:

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

推荐答案

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

You are not appending data that you are receiving. Use this piece of code

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

此方法可能会被调用一次或多次,具体取决于您的数据长度.因此,不要将新数据分配给您的 ivar,而是将您的数据附加到它,以便您获得完整的响应,而不是收到的最后一个数据包.
-----------------------------------------------------------------------------------------------------------------------------------
更新
或者像这样使用.

This method might be called once or more times depending upon your data length. So instead of assigning new data to your ivar, append your data to it so that you have the full response not the last packet of data received.
------------------------------------------------------------------------------------------------------------------------------------
Updated
Or use like this.

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

这篇关于将 NSData 加载到 UIWebView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Why local notification is not firing for UNCalendarNotificationTrigger(为什么没有为UNCalendarNotificationTrigger触发本地通知)
iOS VoiceOver functionality changes with Bundle Identifier(IOS画外音功能随捆绑包标识符而变化)
tabbar middle tab out of tabbar corner(选项卡栏中间的选项卡角外)
Pushing UIViewController above UITabBar(将UIView控制器推送到UITabBar上方)
How can I sync two flatList scroll position in react native(如何在本机Reaction中同步两个平面列表滚动位置)
Get an event when UIBarButtonItem menu is displayed(显示UIBarButtonItem菜单时获取事件)