使用需要发布 JSON 格式数据的 Web 服务时,正确处理 PHP 中的 POST 值至关重要。本文将指导您完成有效读取和解析 JSON POST 数据的步骤。
如果您遇到空 $ 问题尽管指定 application/json 作为 Content-Type,但 _POST 值很可能是由于您过滤 post 值的方式所致。在这种情况下,常规的 $_POST 变量不适合读取 JSON 格式的数据。
访问原始数据JSON POST 数据,需要使用 file_get_contents('php://input')。该函数读取当前脚本的输入流并返回原始 HTTP 请求正文。
更新了接收端的 PHP 代码:
$json = file_get_contents('php://input'); $obj = json_decode($json);
测试 Web 服务时,确保 POST 数据以正确的格式发送至关重要。在您的测试代码中:
更新测试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中文网其他相关文章!