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 动态生成),但是,它有时会显示一个蓝色问号而不是验证码图像。以下是我在扩展WebViewClientMyWebViewClient 类的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怎么修改网页字体颜色和背景

android中webview 怎么实现网页加载时显示加载进度?

android中webview 怎么实现网页加载时显示加载进度

android 升级webview版本,包括6.0系统

Android 下的 WebView 中数据如何保存