首页 > 后端开发 > php教程 > 如何在 PHP 中使用'application/json”内容类型检索 POST 值?

如何在 PHP 中使用'application/json”内容类型检索 POST 值?

Linda Hamilton
发布: 2024-12-23 15:53:15
原创
467 人浏览过

How to Retrieve POST Values with `application/json` Content Type in PHP?

使用 PHP 读取 JSON POST

在此查询中,用户在提取 POST 值并从转换为使用基于 JSON 的内容类型后的 Web 服务。出现了以下问题:

问题:

当内容类型为 application/json 时,检索 POST 值的适当方法是什么?

答案:

传统的 PHP 超全局变量,例如当内容类型为 application/json 时,$_POST 将不包含所需的数据。要访问原始 POST 数据,需要从不同的源读取。

解决方案:

利用 PHP 的 file_get_contents() 函数检索原始 POST 输入并然后使用 json_decode() 解析它。这种方法可以访问关联数组中的数据。

其他注意事项:

用户的测试代码也需要修改。 CURLOPT_POSTFIELDS 应该用于将请求正文设置为 JSON 字符串,而不是尝试将其编码为 application/x-www-form-urlencoded。

更新了用于测试的 PHP 代码:

$data_string = json_encode($data);

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

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

更新了 Web 的 PHP 代码服务:

header('Content-type: application/json');

// Remove duplicate line
// header('Content-type: application/json');

// Remaining code...
登录后复制

以上是如何在 PHP 中使用'application/json”内容类型检索 POST 值?的详细内容。更多信息请关注PHP中文网其他相关文章!

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