Android:WebView loadDataWithBaseURL 不显示验证码图片
Posted
技术标签:
【中文标题】Android:WebView loadDataWithBaseURL 不显示验证码图片【英文标题】:Android: WebView loadDataWithBaseURL does not display captcha image 【发布时间】:2011-11-08 13:22:39 【问题描述】:我试图在我的应用程序的 WebView 中显示一个验证码 jpeg 图像(由 Java servlet 动态生成),但是,它有时会显示一个蓝色问号而不是验证码图像。以下是我在扩展WebViewClient
的MyWebViewClient
类的shouldOverrideUrlLoading(WebView view, String url)
方法中拥有的内容@
我在清单中启用了互联网访问,并且大约 80% 的时间都会出现问题。即,有时图像确实显示正确,但非常罕见。
这里Image with dynamic src loads in android browser, but not in Webview还有另一个类似的问题,但似乎没有明确的答案。
提前致谢
try
CookieSyncManager.getInstance().sync();
Log.v("Hello","CookieStore: " + httpClient.getCookieStore().toString());
HttpResponse response = httpClient.execute(httppost);
data = new BasicResponseHandler().handleResponse(response);
view.loadDataWithBaseURL(URL.toString(), data, "text/html", "UTF-8" , null);
//Log.v("Hello","Data: " + data.toString());
catch (ClientProtocolException e)
Log.v("Hello","ClientProtocolException:Overriding");
Log.v("Hello",e.toString());
e.printStackTrace();
catch (IOException e)
Log.v("Hello","IOException:Overriding");
Log.v("Hello",e.toString());
e.printStackTrace();
【问题讨论】:
【参考方案1】:我也遇到了同样的问题。我发现了这个问题并解决了它(就我而言)。您可以注意到在 HTML 代码中,img 标记的 src 指向站点的相对路径。像<img src="/relativepath/captcha.jpg?12345678"/>
这样的东西。您所要做的就是注入完整路径(主机+相对路径)以获得类似<img src="http://yourhost.com/relativepath/captcha.jpg?12345678">
的内容。
-
逐行阅读 HTML 代码
将序列
"<img src"
(可能在您的站点中有些不同)与每一行匹配
当您找到该行时,您会将其拆分,直到您在 src=""
中找到链接
用主机名重建你的标签:<img src="http://host.com" + link >
然后图像就会出现;)
【讨论】:
【参考方案2】:尝试使用view.loadUrl(URL.toString());
而不是loadDataWithBaseURL
【讨论】:
我试过了,但是 WebView 不会显示任何图像。进一步阅读,我认为“loadUrl”方法不支持从网络/互联网加载图像。以上是关于Android:WebView loadDataWithBaseURL 不显示验证码图片的主要内容,如果未能解决你的问题,请参考以下文章
android webview-android的webview怎么修改网页字体颜色和背景
android中webview 怎么实现网页加载时显示加载进度?