0

我想将此内容加载到 WebView:

当我这样尝试时:

myWebView.loadUrl(myUrlAdress);

它正在加载内容,但所有的 html 格式都是可见的,所以我可以看到所有的段落标签和 css 样式定义,所以它就像一个纯文本。

当我这样尝试时:

myWebView.loadDataWithBaseURL(myUrlAdress, null, "text/html", "UTF-8", null);

根本没有任何反应,webview 保持空白,没有任何数据。

我尝试的最后一种方法是:

myWebView.loadDataWithBaseURL(myUrlAdress, myUrlAdress, "text/html", "UTF-8", null);

这一次,webview 只是打印我尝试获取数据的链接,仅此而已。

有人能告诉我要走哪条路,有什么问题吗?

4

1 回答 1

1

问题是服务器返回内容类型 text/json,所以带有 loadUrl 的 WebView 不知道它应该解析和显示 HTML。当您使用 loadDataWithBaseUrl 时,数据字符串必须是实际的 HTML,而不仅仅是您提供的 URL。如果您无法控制服务器输出,则需要将数据下载到字符串并将该字符串作为数据加载到 webview,就像这样作为活动的内部类:

public class WebLoader extends AsyncTask<String, String, String> {

    @Override
    protected String doInBackground(String... params) {
        try {
            final HttpClient client = new DefaultHttpClient();
            final HttpGet request = new HttpGet(params[0]);
            BasicResponseHandler handler = new BasicResponseHandler();
            return client.execute(request, handler);
        }
        catch (Exception e) {
            // do something
            return null;
        }
    }

    @Override
    protected void onPostExecute(String html) {
        webview.loadDataWithBaseURL(url, html, "text/html", "UTF-8", null);
    }

}
于 2013-03-23T17:38:29.720 回答