使用 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中文网其他相关文章!