Android:WebView loadDataWithBaseURL不显示验证码图像

时间:2011-09-01 16:27:33

标签: android image webview captcha loaddata

我试图在我的应用程序的WebView中显示一个验证码jpeg图像(由Java servlet动态生成),但是,它有时会显示一个蓝色问号而不是验证码图像。以下是shouldOverrideUrlLoading(WebView view, String url) MyWebViewClientWebViewClient类扩展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(); }

的方法

我的清单中启用了互联网访问,大约80%的时间都会出现问题。即有时图像确实显示正确,但非常罕见。

此处还有另一个类似的问题Image with dynamic src loads in Android browser, but not in Webview,但似乎没有明确的答案。

提前致谢

{{1}}

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我确定了问题并解决了它(在我的例子中)。您可以注意到,在HTML代码中,img标记的src指向站点的相对路径。像<img src="/relativepath/captcha.jpg?12345678"/>这样的东西。您所要做的就是注入完整路径(主机+相对路径)以获得类似<img src="http://yourhost.com/relativepath/captcha.jpg?12345678">的内容。

  1. 逐行阅读HTML代码
  2. 将序列"<img src"(可能是您网站中的某些内容)与每行匹配
  3. 当您找到该行时,您将拆分它,直到找到src=""
  4. 中的链接
  5. 使用主机名重建您的代码:<img src="http://host.com" + link >
  6. 然后会出现图像;)

答案 1 :(得分:0)

尝试使用view.loadUrl(URL.toString());代替loadDataWithBaseURL