从服务器获取数据后如何在Web视图中加载png

时间:2019-05-15 21:57:03

标签: android webview android-webview http-proxy

我正在尝试通过服务器调用来调用url,因此,例如,每当我访问google.com时,我都会使用url作为参数来访问服务器,并且会向我发送xml作为响应,加载到webview中。但是,当我致电服务器以加载将成为google.com页面一部分的徽标或Doodle时,api返回了一些base64字符串,但从未加载png。它只是显示为残破的图像。

到目前为止,我所做的是:

  1. 我有一个扩展WebViewClient的自定义类
  2. 该类将覆盖方法shouldInterceptRequest
  3. 我使用网址request.getUrl().toString()
  4. 调用api。
  5. 我这样返回WebResourceResponsereturn new WebResourceResponse("image/png", "UTF-8", new ByteArrayInputStream(bytes_here));。因此,对于可能要加载的不同类型的文件,我有不同的mime类型。
  6. 对于html数据,mime类型将为“ text / html”
  7. 当要加载html数据时,我使用以下代码段将数据加载到Webview上:webView?.loadDataWithBaseURL(url, response, "text/html", "UTF-8", url),使用webView?.loadData不会在Webview上加载,而是将其加载到地址栏中,这真的不是我想要的。
  8. 该类还覆盖了方法shouldOverrideUrlLoading,该方法返回true(如果有帮助,我什至尝试返回false)

有没有一种方法可以将png base64或字节加载到必须加载的Webview中?还是让Webview正常运行,并自行加载png或其他CSS或JS脚本?

我尝试使用代理,并将其设置为webview,但是这也会导致所有其他请求也受到影响,这不是我想要做的。

或者,我还有其他方法可以通过代理为每个被命中的URL进行服务器调用吗?我也尝试了一点代理,但是对于google.com或https调用,它无法将数据加载回去,并且抛出SSLException,有时它甚至在将数据发送回之前就只是关闭了连接。

0 个答案:

没有答案