You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio JSON解析报错:无法将<!doctype字符串转为JSONObject

问题原因及排查方案
  • 先核对请求URL是否完全正确
    你在Android代码里写的请求地址,和你用在线JSON工具测试的地址必须完全一致,包括域名、路径、后缀(比如.php)、参数。如果地址写错,服务器可能返回404错误页面(就是带<!doctype>的HTML内容),自然没法转成JSONObject。

  • 检查PHP脚本是否输出了多余内容
    就算在线测试正常,也得排查PHP代码的问题:

    • 有没有在json_encode输出前后加了调试用的echo、空格、换行,或者PHP标签<?php/?>外有空白字符?这些都会让返回内容混进非JSON的字符。
    • 有没有触发PHP错误?比如SQL语句报错、变量未定义,服务器会输出错误提示的HTML页面。你可以临时把Android里的JsonObjectRequest换成StringRequest,打印返回的字符串看看真实内容:
      StringRequest stringRequest = new StringRequest(Request.Method.GET, YOUR_REQUEST_URL,
              response -> Log.d("RawResponse", response),
              error -> Log.e("RequestError", error.getMessage()));
      requestQueue.add(stringRequest);
      
  • 确保PHP设置了正确的响应头
    PHP输出JSON时,必须指定响应类型,不然服务器默认返回HTML类型,Volley解析时容易出问题。在echo json_encode(...)之前加上:

    header('Content-Type: application/json; charset=utf-8');
    
  • 排查服务器是否拦截了非浏览器请求
    有些服务器会对非浏览器的请求做拦截,返回验证页面(比如验证码、登录提示),这时候拿到的就是HTML。你可以用Postman模拟Android的请求头(比如把User-Agent设成Mozilla/5.0 (Linux; Android 10; SM-G973F) AppleWebKit/537.36),看看返回的是不是纯JSON。

内容的提问来源于stack exchange,提问作者Pierre-Paul Arthau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:41:32