【问题标题】:UIWebView shows error when webpage is loaded, Safari shows perfectly加载网页时UIWebView显示错误,Safari完美显示
【发布时间】:2011-07-20 15:27:14
【问题描述】:

问题是网站在 UIWebView 中没有完全加载,但在 Safari 中正常加载。

这是我在 UIWebView 中加载网站时遇到的错误:

警告: cos_before_render(/home/user/ctown/doc_wbn//../sys/swt/www.westspringsec.moe.edu.sg.mob) [function.cos-before-render]:失败 打开流:没有这样的文件或 目录在 /home/user/ctown/cti_bin/wbn/cos_init.inc 在第 731 行

警告:cos_before_render() [function.include]:打开失败 '/home/user/ctown/doc_wbn//../sys/swt/www.westspringsec.moe.edu.sg.mob' 纳入 (include_path='.:/home/user/ctown/cti_bin/phplot:/usr/local/lib/php') 在 /home/user/ctown/cti_bin/wbn/cos_init.inc 在第 731 行

致命错误:调用未定义 函数:json_encode() 在 /home/user/ctown/cti_bin/wbn/cos_init.inc 在第 737 行

- (void)viewDidLoad {
    NSString *urlAddress = @"http://www.westspringsec.moe.edu.sg";
    NSURL *url = [NSURL URLWithString:urlAddress];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [Webview loadRequest:requestObj];
    [super viewDidLoad];
}

我尝试了下面链接的问题,但是我无法修改网站的后端!

UIWebView Xhmtl parse error but safari don't

【问题讨论】:

    标签: iphone objective-c ios ios4 uiwebview


    【解决方案1】:

    此答案不会解决您的问题(请参阅 Nick 的答案),但您应该在执行任何其他操作之前输入 [super viewDidLoad];。所以:

    - (void)viewDidLoad {
        [super viewDidLoad];
        NSString *urlAddress = @"http://www.westspringsec.moe.edu.sg";
        NSURL *url = [NSURL URLWithString:urlAddress];
        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
        [Webview loadRequest:requestObj];
    }
    

    【讨论】:

      【解决方案2】:

      错误不在您的代码中! UIWebView,尤其是在模拟器中使用类似这样的用户代理:

      Mozilla/5.0(iPhone 模拟器;U;CPU iPhone OS 4_2,如 Mac OS X;en-us)AppleWebKit/533.17.9(KHTML,如 Gecko)Mobile/8C134

      当您调用提供的 url 时,它会导致您看到的错误。这是服务器端错误。

      您可以使用此代码更改您的用户代理,将其放在应用程序启动阶段的某个位置,以便只设置一次:

      NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Safari/528.16", @"UserAgent", nil];
      [[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];
      [dictionnary release];
      

      这样我就可以打开你的页面了。看起来网站为 iphone 返回了不同的标记,所以上面代码的结果将显示网站,对于小显示器来说有点大。

      【讨论】:

      • 嗨,尼克,我是将其放入视图控制器或我的应用程序委托的 .h .m 文件中吗?
      • 你可以把它放在你的应用委托中。只能设置一次。
      • 我只是想在这里添加我的经验。 UIWebView 经过 3 或 4 次重定向后,我在许多网站(例如 Groupon)上收到错误 -999。如示例中所示,将用户代理更改为不太有效的内容会导致 Groupon 的非移动版本正确加载。我真的不想要非移动版本,但至少它加载了。我仍在寻找真正解决问题的方法。
      【解决方案3】:

      UIWebView 和 Safari 没有相同的用户代理。

      【讨论】:

      • 好的,谢谢,但是用户代理到底是什么意思?我总是看到它!
      猜你喜欢
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多