2011-03-22 161 views
0

问题是网站没有完全加载UIWebView,但它在Safari中正常加载。UIWebView在加载网页时显示错误,Safari完美显示

这是装载在一个UIWebView的网站时,我得到的错误:我尝试以下链接的问题

Warning: cos_before_render(/home/user/ctown/doc_wbn//../sys/swt/www.westspringsec.moe.edu.sg.mob) [function.cos-before-render]: failed to open stream: No such file or directory in /home/user/ctown/cti_bin/wbn/cos_init.inc on line 731

Warning: cos_before_render() [function.include]: Failed opening '/home/user/ctown/doc_wbn//../sys/swt/www.westspringsec.moe.edu.sg.mob' for inclusion (include_path='.:/home/user/ctown/cti_bin/phplot:/usr/local/lib/php') in /home/user/ctown/cti_bin/wbn/cos_init.inc on line 731

Fatal error: Call to undefined function: json_encode() in /home/user/ctown/cti_bin/wbn/cos_init.inc on line 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

回答

0

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

+0

好的谢谢,但用户代理准确地意味着什么?我总是看到它! – 2011-04-13 04:38:41

0

这个答案不会解决你的问题(见尼克的回答是),但你应该把你[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]; 
} 
+0

感谢乔纳森的建议! – 2011-03-30 12:59:26

3

该错误不在您的代码内! UIWebView,特别是在模拟器中使用的用户代理是这样的:

Mozilla/5.0(iPhone模拟器; U; CPU iPhone OS 4_2,如Mac OS X; en-us)AppleWebKit/533.17.9(KHTML,像壁虎)手机/ 8C134

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

您可以更改使用此代码的用户代理,把它放在某个地方你的应用程序的启动阶段,所以它只能设置一次:

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

有了这个,我能打开网页。它看起来像该网站返回iPhone的不同标记,所以与上面的代码结果将显示网站,这是一个小显示器有点大。

+0

嗨尼克,我把这个视图控制器或我的应用程序委托的.h .m文件? – 2011-04-13 04:45:33

+0

你可以把它放在你的应用程序委托中。它只能设置一次。 – 2011-04-13 07:14:47

+0

我只是想在这里添加我的经验。在UIWebView经历了3次或4次重定向之后,我在许多网站(例如Groupon)上收到了一个错误-999。如示例中所示,将用户代理更改为无效,导致Groupon的非移动版本正确加载。我真的不想要非移动版本,但至少它已加载。我仍然在寻找解决问题的方法。 – JavaCoderEx 2011-07-19 18:56:07