我使用以下命令从Api获取卷曲响应:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://{api-url_goed_here}/api/v2/token",
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{"grant_type": "password","client_id": "'.$client_id.'","username":"'.$username.'","password":"'.$user_password.'"}',
CURLOPT_HTTPHEADER => array(
"content-type: application/json"
),
));
$responseArray = curl_exec($curl);
$err = curl_error($curl);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://{api-url_goed_here}/api/v2/token",
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{"grant_type": "password","client_id": "'.$client_id.'","username":"'.$username.'","password":"'.$user_password.'"}',
CURLOPT_HTTPHEADER => array(
"content-type: application/json"
),
));
$responseArray = curl_exec($curl);
$err = curl_error($curl);
我得到回应。当我使用print_r($ responseArray)时,它看起来像一个数组。 但是当我使用var_dump($ responseArray)时,我看到它实际上是一个字符串:
如何防止获取字符串作为响应?我旨在获取一个数组,因为我想提取access_token
答案 0 :(得分:1)
作为临时解决方案,您可以使用php.net print_r_reverse function注释中的print_r documentation。 只需将该函数添加到您的代码中的某处,然后像这样访问令牌:
$response = curl_exec($curl);
$responseArray = print_r_reverse($response);
echo $responseArray['token'];
答案 1 :(得分:0)
最终,Curl响应对于PHP毫无意义。它只是返回的一堆字符串,而是一台服务器。
只需确保您可以处理返回的内容。而且,如果您对此有任何控制权,则可以更改返回值,以使Curl返回在https://{api-url_goed_here}/api/v2/token
运行的脚本中所需的内容。
如果您将响应指向example.com,则可能是该源代码。
答案 2 :(得分:0)
我已经与API的开发人员联系。事实证明:为了获得格式化的响应,我必须在标头中添加“ accept:application / json”。否则,我只会得到结果的print_r转储。