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

安卓调用PHP注册接口返回值无法转换为JSONObject报错问题咨询

问题原因及解决方案

你的报错核心原因是PHP接口返回的内容不是纯JSON格式,前面夹杂了PHP运行时输出的警告/错误信息,这类信息默认会带<br>标签做换行,所以安卓端拿到的字符串以<br开头,无法解析为JSONObject。

具体问题点

  • 图片处理逻辑矛盾:安卓端将图片转为base64字符串放在POST参数中提交,但PHP代码中保留了表单文件上传的处理逻辑,$image_tmp = $_FILES['image']['tmp_name'];和move_uploaded_file($image_tmp,"images/$image");这两行代码会触发PHP警告:Undefined array key "image",这是导致返回内容带<br>的直接原因。
  • 参数传递顺序错误:安卓端提交时把gender和profession的参数值写反,且PHP调用addRoyalsMember方法时,传入的$gender和$profession顺序和方法定义的参数顺序不匹配,会导致写入数据库的字段值错位。
  • 未设置JSON响应头且未清理多余输出:PHP输出JSON前没有设置对应Content-Type头,若有多余的输出(比如include的文件开头/结尾的空格、PHP报错信息)会直接拼接在JSON前面,导致解析失败。

修复步骤

  1. 删除PHP中多余的文件上传处理代码,移除以下两行:
$image_tmp = $_FILES['image']['tmp_name'];
move_uploaded_file($image_tmp,"images/$image");
  1. 修正PHP中方法调用的参数顺序,将原来的调用代码:
$insertRoyalsMember->addRoyalsMember($fullName,$homeAddress,$contact,$color,$hobbies,$department,$birthday,$lookingForwardTo,$interests,$gender,$profession,$image);

修改为:

$insertRoyalsMember->addRoyalsMember($fullName,$homeAddress,$contact,$color,$hobbies,$department,$birthday,$lookingForwardTo,$interests,$profession,$gender,$image);
  1. 在PHP输出JSON前添加响应头和输出清理逻辑,在echo json_encode($response);之前添加以下代码:
ob_clean();
header('Content-Type: application/json; charset=utf-8');

同时确保PHP文件开头<?php前没有任何空格、换行,可删除文件末尾的?>避免尾部多余字符输出。
4. 验证返回内容:可通过Postman调用接口查看返回内容是否为纯JSON,安卓端也可查看responsemessage的日志确认返回内容符合JSON格式。

内容的提问来源于stack exchange,提问作者itai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:15:04