我正在使用curl将json数据发布到php中的rest端点。 这是在集成测试中完成的。 令人惊讶的是,整个json对象在服务器上的$ _POST中可用。 这怎么可能 ? 这是发布json的PHP代码:
$data = array(
'username' => 'blahbah',
'password' => 'blahblah',
'grant_type' => 'client_credentials',
'client_id' => 'blah',
'client_secret' => 'blah'
);
$data_string = json_encode($data);
$this->curl = curl_init($this->tokenApi);
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($this->curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($this->curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($this->curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string));
$response = curl_exec($this->curl);
在api方面,如果我执行print_r($ _ POST),我会得到:
Array
(
[username] => blahbah
[password] => blahblah
[grant_type] => client_credentials
[client_id] => blah
[client_secret] => blah
)
这怎么可能? 根据我的阅读,json字符串应仅作为“php // input”提供。我对访问json的正确方法有点困惑。我使用的是PHP 5.4。
感谢。