2013-03-23 82 views
0

我想加载this content到的WebView:加载内容的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简单地打印从我试图让数据的链接,而不是其他。

有人可以告诉我哪条路要走,问题是什么?

+0

你能告诉您的完整活动代码? – Kanth 2013-03-23 17:33:09

+0

您是否设置了互联网权限? – Ahmad 2013-03-23 17:34:39

回答

1

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

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); 
    } 

}