You need to enable JavaScript to run this app. Android Studio中使用Fuel发送POST请求至PHP时后端接收为空的问题
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中使用Fuel发送POST请求至PHP时后端接收为空的问题

问题根因

1. 请求内容类型与PHP $_POST 的解析机制不兼容

  • Fuel的.jsonBody()方法在发送请求时,会自动将Content-Type请求头设置为application/json,请求主体为纯JSON序列化文本。
  • PHP的$_POST超全局数组仅自动解析两类POST请求体:
    • 标准表单编码application/x-www-form-urlencoded
    • 文件上传编码multipart/form-data
  • 对application/json格式的原始请求体,PHP不会自动执行解析逻辑,此时访问$_POST必然返回空数组,也就是你看到的Array()输出。

2. 示例代码存在地址偏差

  • 你贴出的Fuel请求示例使用的是第三方公共测试地址https://httpbin.org/post,和你的自有test.php服务地址不匹配;即便你实际测试时将地址替换为了自有后端,只要使用jsonBody发送application/json格式请求,依然会触发$_POST为空的问题。

可直接落地的修复方案

方案A:改用表单格式发送请求,匹配$_POST的解析规则

如果你的后端需要把参数存入$_POST数组,就不要使用jsonBody构造请求,改用Fuel的表单参数构造方法,自动生成PHP可识别的编码格式:

Fuel.post("http://你的后端服务地址/test.php")
    .body(listOf("foo" to "bar")) // 自动携带application/x-www-form-urlencoded请求头
    .response { result ->
        println(result)
    }

这种格式发送的请求,PHP解析后$_POST会正常填充foo=bar的内容。

方案B:后端适配JSON请求体的解析逻辑

如果业务场景要求必须发送JSON格式的请求体,就需要修改PHP端的测试代码,手动读取原始请求体做解析,不能直接读取$_POST:

<?php
// 读取原始POST请求流内容
$rawRequestBody = file_get_contents('php://input');
// 将JSON文本转为关联数组输出
$parsedContent = json_decode($rawRequestBody, true);
print_r($parsedContent);
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 01:06:02