WebView loadData出错(奇怪的设计)

今天遇到一个奇怪的问题。


我使用WebView加载一个网页。

方法1. 直接使用 loadUrl() 方法,没有问题。完全可以。
方法2. 使用loadData()方法,出现问题,
无法显示
方法3. 使用loadDataWithBaseURL()方法, 完全可以。



--------------------------------------------------------------------------------------------
我就纳闷了,为什么唯独 webView.loadData()这个方法出错呢?


要知道,WebView是无法捕捉到401、404这样的错误的,只能捕捉到网络超时等这些错误。 所以为了可以判断服务器的相应,我需要HttpConnection来判断返回码, 先从网页上将数据拉下来,然后再通过loadData显示。 恩,不错的想法.. (当然用loadDataWithBaseURL也可以实现了,但是我还是想知道为什么loadData不可以。)


可是.. 现实有点残酷... 显示不了,NND!


看了下官方文档..



终于发现区别了。 原来loadData的第一个参数中,不能有特殊字符“#”,“%”,“\”, “?”.必须将其转化为%23,%25,%27,%3f.


而loadDataWithBaseURL 却没这个要求。

我了个去,这是何苦呢? 为什么要这样设计呢?

下面解决一下这个问题。 用encode方法转一下即可。



你可能感兴趣的:(webView)