首页 > 后端开发 > php教程 > 如何在PHP中正确读取JSON POST数据?

如何在PHP中正确读取JSON POST数据?

Barbara Streisand
发布: 2024-12-16 19:39:15
原创
936 人浏览过

How Can I Properly Read JSON POST Data in PHP?

使用 PHP 读取 JSON POST

使用需要发布 JSON 格式数据的 Web 服务时,正确处理 PHP 中的 POST 值至关重要。本文将指导您完成有效读取和解析 JSON POST 数据的步骤。

问题:应用程序/JSON 内容类型为空 $_POST 值

如果您遇到空 $ 问题尽管指定 application/json 作为 Content-Type,但 _POST 值很可能是由于您过滤 post 值的方式所致。在这种情况下,常规的 $_POST 变量不适合读取 JSON 格式的数据。

解决方案:使用 file_get_contents('php://input') 读取 JSON

访问原始数据JSON POST 数据,需要使用 file_get_contents('php://input')。该函数读取当前脚本的输入流并返回原始 HTTP 请求正文。

更新了接收端的 PHP 代码:

$json = file_get_contents('php://input');
$obj = json_decode($json);
登录后复制

处理 POST 数据测试期间正确

测试 Web 服务时,确保 POST 数据以正确的格式发送至关重要。在您的测试代码中:

  • 使用 json_encode($data) 将数据转换为 JSON 字符串。
  • 在 HTTP 标头中将 Content-Type 指定为 application/json。

更新测试code:

$data_string = json_encode($data);

$ch = curl_init('http://webservice.local/');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
);

$result = curl_exec($ch);
$result = json_decode($result);
登录后复制

标头配置注意事项

确保 header('Content-type: application/json') 在接收端仅调用一次。

以上是如何在PHP中正确读取JSON POST数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板