PHP API内容类型:application/json.响应空数据


PHP API Content-Type: application/json. Response empty data

适用于:

  • 从Android平台发送到PHP (web service)
  • 请求头与此Content-Type: application/x-www-form-urlencoded一起发送

不工作:

  • 请求头与Content-Type: application/json一起发送。未收到数据

API在同一平台上工作,但不是跨平台的:

  • Web到Web WORKING
  • Android到web不工作

在PHP中添加了两个标题:

header("Access-Control-Allow-Origin: *");
header('Content-Type: application/json');

如果你比较这两种内容类型application/x-www-form-urlencoded和application/json在"第一个工作与PHP,第二个不",那么你可能期望在这两种情况下的数据神奇地出现在$_POST。

这不会发生。PHP只在给定第一种内容类型时填充$_POST(或者,application/multipart-form-data可以用于所有内容,特别是文件上传)。

如果你想使用application/json,那么你必须自己在PHP端实现一个解析器,读取HTTP请求体并根据你的喜好进行解析。

经过日志搜索,我找到了我的答案。我们需要这个函数从跨平台(android到web)获取$_POST响应

file_get_contents('php://input')

或者我们也可以使用这个函数来获取$_POST响应

$HTTP_RAW_POST_DATA

这里是获得响应的完整函数。

$data = urldecode(file_get_contents('php://input'));
echo $data;