Как загрузить pngs в веб-просмотр после получения данных с сервера - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь вызвать url через серверный вызов, поэтому каждый раз, когда я нажимаю на google.com, например, я нажимаю на сервере с URL в качестве параметра, и он отправляет мне xml в качестве ответа, что делает загрузить в веб-просмотр. Однако, когда я звоню на сервер, чтобы загрузить логотип или рисунок, который будет частью страницы google.com, API возвращает некоторую строку base64, но png никогда не загружается. Он отображается как разорванное изображение.

То, что я сделал до сих пор:

  1. У меня есть собственный класс, который расширяет WebViewClient
  2. Класс переопределяет метод shouldInterceptRequest
  3. Я называю API с URL-адресом, то есть, request.getUrl().toString()
  4. Я возвращаю WebResourceResponse вот так: return new WebResourceResponse("image/png", "UTF-8", new ByteArrayInputStream(bytes_here));. Поэтому у меня есть разные типы MIME для разных типов файлов, которые могут загружаться.
  5. В случае данных html тип mime будет "text / html"
  6. Когда будут загружаться html-данные, я использую этот фрагмент кода для загрузки данных в веб-просмотр: webView?.loadDataWithBaseURL(url, response, "text/html", "UTF-8", url), использование webView?.loadData не загружает веб-просмотр, а вместо этого загружает его в адресную строку, которая на самом деле не что бы я хотел.
  7. Класс также переопределяет метод shouldOverrideUrlLoading, который возвращает true (я даже пытался вернуть false, если это поможет)

Есть ли способ загрузить png base64 или байты в веб-просмотр, куда он должен быть загружен? Или заставить веб-просмотр работать нормально и загружать pngs или другие сценарии css или js самостоятельно?

Я попытался использовать прокси-сервер и настроил его на веб-просмотр, но это также влияет на все другие запросы, что я не хотел бы делать.

Или, есть ли другой способ сделать серверные вызовы для каждого обращения по URL через прокси? Я тоже пробовал маленький прокси, но для вызовов google.com или https не удается загрузить данные обратно и выдает исключение SSLE, а иногда просто закрывает соединение, прежде чем отправлять данные обратно.

...