curl响应是一个字符串而不是数组

时间:2019-03-20 16:06:45

标签: php arrays curl

我使用以下命令从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

3 个答案:

答案 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转储。