Android Studio从URL获取数据显示HTML代码的问题求助
解决TextView直接显示HTML代码而非解析内容的问题
嘿,我看你遇到了TextView只显示原始HTML代码的困扰,这是因为你只是把获取到的字符串直接追加到TextView里,没有让Android系统解析HTML标签。咱们来一步步解决这个问题:
问题原因
你的TaskGetData类的onPostExecute方法中,直接把网络请求返回的result字符串添加到TextView中——TextView默认会将所有内容当作普通纯文本处理,不会识别并解析HTML格式的标签,所以就会把<xxx>这类代码原封不动显示出来。
解决方案:让TextView解析HTML内容
Android提供了Html.fromHtml()方法来将HTML字符串转换为可显示的富文本,不过要注意API版本兼容:
修改你的onPostExecute方法,替换成下面的代码:
@Override protected void onPostExecute(String result) { if (result != null) { Spanned parsedHtml; // 适配不同Android版本的HTML解析方式 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { parsedHtml = Html.fromHtml(result, Html.FROM_HTML_MODE_LEGACY); } else { parsedHtml = Html.fromHtml(result); } textView.append(parsedHtml + "\n"); } else { textView.append("数据获取失败\n"); } }
额外注意点
另外,我注意到你请求的URL是.json后缀的接口,但实际返回的是HTML代码——这可能是服务器返回了错误页面(比如404找不到资源)。你可以先在doInBackground里打印一下result的内容,确认返回的到底是预期的JSON数据还是错误HTML:
@Override protected String doInBackground(String... params) { String data = MyHttpUtils.getDataHttpUriConnection(params[0]); Log.d("HttpResult", "返回内容: " + data); // 打印日志查看实际返回内容 return data; }
如果确实是JSON数据,那你需要先解析JSON(比如用Gson、JSONObject等工具),提取出需要显示的文本后再设置到TextView,而不是当作HTML解析哦。
内容的提问来源于stack exchange,提问作者Nima Khalili
相关产品推荐
相关产品推荐

