Загрузка данных HTML в WebView - PullRequest
1 голос
/ 13 сентября 2011

Я работаю над примером приложения, чтобы иметь возможность загружать простые html-данные в веб-просмотр без искажения содержимого.В своей деятельности я использую пакеты org.apache.http для подключения к веб-сайту и получения его содержимого с помощью частного метода openGoogleHomePage ().

DefaultHttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet("http://www.google.com");

get.setHeader("Content-Type", "application/x-www-form-urlencoded");
get.setHeader("User-Agent","Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17");

HttpResponse response = client.execute(get);

String data = new BasicResponseHandler().handleResponse(response);
data = data.replaceAll("%", "%");
return data;

Когда я сравниваю «данные» с фактическим HTMLответ на контент при открытии http://www.google.com в браузере Firefox, контент такой же.Однако, когда я пытаюсь загрузить эти «данные» в веб-просмотр, я не вижу ничего подобного.

    LinearLayout layout = (LinearLayout) View.inflate(this, R.layout.main, null);
    setContentView(layout);
WebView browser = (WebView) layout.findViewById(R.id.webPage);

browserSettings = browser.getSettings();
browserSettings.setJavaScriptCanOpenWindowsAutomatically(true);
browserSettings.setJavaScriptEnabled(true);
browserSettings.setSavePassword(false);
browserSettings.setSaveFormData(false);
browserSettings.setSupportZoom(false);

browser.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }
});

String htmlData = openGoogleHomePage();
if (htmlData != null) {
    browser.loadData(htmlData, "text/html", HTTP.UTF_8);
}

Что мне нужно изменить в моем коде, чтобы я мог просматривать его в веб-просмотре точно так же, как в браузере на ПК?С другой стороны, не проходя кропотливый процесс вызова URL-адреса с использованием пакетов http и вместо этого вызывая URL-адрес из веб-просмотра с помощью webview.loadUrl («http://www.gooogle.com"), конечно, извлекает мобильную версию страницы поискового гиганта», что сильно отличается от версии браузера для ПК.

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

Кроме того, если бы кто-то мог показать некоторые указатели при обработке URL-перенаправлений, это очень помогло бы.

1 Ответ

1 голос
/ 13 сентября 2011

Некоторые определения мобильных устройств могут основываться на пользовательском агенте. Попробуйте настроить UserAgent в WebView для использования аналога Desktop, добавив еще один параметр в WebView.

  browserSettings.setUserAgentString("Mozilla/5.0");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...