ответ curl - это строка вместо массива - PullRequest
0 голосов
/ 20 марта 2019

Я использую следующие команды для получения ответа Curl от Api: </p> <pre><code> $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), я вижу, что это на самом деле строка:

    string(384) "Array
(
    [access_token] => #token_is_here
    [token_type] => bearer
    [expires_in] => 3600
    [refresh_token] => #refresh_token_is_here
    [uid] => 7
    [info] => Array
        (
            [name] => #name_is_here
            [code] => #some_code
            [email] => #some_mail_address
        )
    [policy] => Array
        (
            [write_hours] => 1
        )
)
"

Как мне предотвратить получение строки в качестве ответа? Я стремлюсь получить массив, потому что я хочу извлечь access_token

Ответы [ 3 ]

1 голос
/ 20 марта 2019

В качестве временного решения вы можете использовать функцию print_r_reverse из php.net документация print_r комментарии.Просто добавьте эту функцию где-нибудь в свой код и получите доступ к токену следующим образом:

$response = curl_exec($curl);
$responseArray = print_r_reverse($response);
echo $responseArray['token'];
0 голосов
/ 21 марта 2019

У меня был контакт с разработчиком API.Как оказалось: мне нужно добавить «accept: application / json» в заголовок, чтобы получить отформатированный ответ.В противном случае я просто получаю дамп print_r результата.

0 голосов
/ 20 марта 2019

В конечном счете, ответ Curl не имеет смысла для PHP.Это просто набор возвращаемых строк, но сервер.

Просто убедитесь, что вы можете обработать то, что возвращается.И если у вас есть какой-либо контроль над этим, то измените возвращаемое значение на то, что Curl возвращает то, что вы хотите в скрипте, работающем на https://{api-url_goed_here}/api/v2/token.

Ответом мог быть исходный код example.comесли вы сделаете это там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...