Android: WebView loadDataWithBaseURL не отображает изображение с картинки - PullRequest
0 голосов
/ 01 сентября 2011

Я пытаюсь отобразить изображение в формате captcha jpeg (которое динамически генерируется сервлетом Java) в WebView моего приложения, однако иногда оно отображает синий знак вопроса вместо изображения с изображением капчи.Ниже приведено то, что у меня есть в моем shouldOverrideUrlLoading(WebView view, String url) методе MyWebViewClient класса, который расширяет WebViewClient

. У меня включен доступ к Интернету в моем манифесте, и проблема возникает примерно в 80% случаев.т.е. иногда изображение отображается правильно, но очень редко.

Здесь был еще один похожий вопрос Изображение с динамической загрузкой src в браузере Android, но не в 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();  
            }

Ответы [ 2 ]

1 голос
/ 02 августа 2013

У меня такая же проблема. Я определил проблему и решил ее (в моем случае). Вы можете заметить, что в 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. Восстановите ваш тег с именем хоста: <img src="http://host.com" + link >

Тогда изображение появится;)

0 голосов
/ 02 сентября 2011

Попробуйте использовать view.loadUrl(URL.toString()); вместо loadDataWithBaseURL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...