HTML внутри webView - PullRequest
       6

HTML внутри webView

3 голосов
/ 26 марта 2010

Я отправляю некоторые данные на сервер, используя класс DefaultHttpClient, и в потоке ответов я получаю файл HTML. Я сохраняю поток в виде строки и передаю его в другое действие, которое содержит WebView для отображения этого HTML-кода на экране:

response = httpClient.execute(get);
InputStream is = response.getEntity().getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is,"utf-8"));
StringBuffer sb = new StringBuffer();
String line;

while((line=br.readLine())!=null){
    sb.append(line);
    sb.append("\n");
}

is.close();

Intent intent = new Intent(this,Trial.class);
intent.putExtra("trial",sb.toString());
startActivity(intent);

Log.i("SB",sb.toString());

В Second Activity код для загрузки WebView выглядит так:

WebView browser = ((WebView)findViewById(R.id.trial_web));
browser.getSettings().setJavaScriptEnabled(true); 
browser.loadData(html,"text/html", "utf-8");

Когда я запускаю этот код, WebView не может правильно отобразить содержимое HTML. На самом деле на экране отображается строка HTML в формате URL в кодировке. Интересно, что если я скопирую выходные данные Loggers в файл HTML, а затем загружу этот HTML в мой WebView (используя webview.loadurl(file:///assets/xyz.html)), все будет работать нормально.

Я подозреваю некоторую проблему с кодировкой символов.

Что здесь не так? Пожалуйста, помогите.

Спасибо.

1 Ответ

1 голос
/ 26 марта 2010

Попробуйте использовать BasicResponseHandler вместо того, чтобы конвертировать все в строку самостоятельно. См. здесь для примера. Я скептически отношусь к этому, но это упростит ваш код и позволит вам избавиться от неэффективного StringBuffer.

Кроме того, вы можете попробовать переключиться на loadDataWithBaseURL(), поскольку у меня были плохие результаты с loadData(). Вышеупомянутый пример также показывает это.

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