在 PHP 中读取 JSON POST 数据
当接收 JSON 格式的 POST 数据时,在 PHP 中正确检索和解析它至关重要。在您的场景中,您遇到了由于 JSON POST 数据处理不正确而导致的问题。
要解决此问题,请将 $_POST 的使用替换为其他方法来读取原始输入,然后将其解码为 JSON。以下是实现此目的的方法:
在接收页面上修改 PHP:
$inputJSON = file_get_contents('php://input'); $input = json_decode($inputJSON, TRUE);
此代码将原始输入读取为 JSON,然后将其解析为数组您可以通过 $input 访问。
更新了 CURL 代码测试:
如响应中所述,CURLOPT_POSTFIELDS 应与 JSON 编码字符串一起使用以进行 JSON 通信。下面是修改后的代码:
$data_string = json_encode($data); $curl = curl_init('http://webservice.local/'); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string) )); curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($curl); $result = json_decode($result); var_dump($result);
此代码正确设置 HTTP 标头以指示 JSON 内容,并在将数据发送为 JSON 之前对数据进行编码。
附加说明:
必须确保 header('Content-type: application/json');该行仅在您的网络服务页面上出现一次。如果多次调用,可能会导致发送正确的标头信息时出现问题。
以上是如何在PHP中正确读取和解析JSON POST数据?的详细内容。更多信息请关注PHP中文网其他相关文章!