Последовательные запросы cUrl

190
17 марта 2018, 18:58

Как можно отправлять новый запрос, после ответа сервера на предидущий? Т.к. для последующих запросов параметры состоят из ответов предидущих.

<?php 
/** 
* http://www.php.net/manual/ru/function.curl-exec.php 
*/ 
/** 
* Send a GET request using cURL 
* @param string $url to request 
* @param array $get values to send 
* @param array $options for cURL 
* @return string 
*/ 
 
function curl_get($url, array $get = NULL, array $options = array()) { 
    $defaults = array( 
        CURLOPT_URL => $url . (strpos($url, "?") === FALSE ? "?" : "") . http_build_query($get) , 
        CURLOPT_HEADER => 0, 
        CURLOPT_RETURNTRANSFER => TRUE, 
        CURLOPT_DNS_USE_GLOBAL_CACHE => false, 
        CURLOPT_SSL_VERIFYHOST => 0, //unsafe, but the fastest solution for the error " SSL certificate problem, verify that the CA cert is OK" 
        CURLOPT_SSL_VERIFYPEER => 0, //unsafe, but the fastest solution for the error " SSL certificate problem, verify that the CA cert is OK" 
    ); 
    $ch = curl_init(); 
    curl_setopt_array($ch, ($options + $defaults)); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
 
 
    if (!$result = curl_exec($ch)) { 
        trigger_error(curl_error($ch)); 
    } 
 
    curl_close($ch); 
    return $result; 
} 
 
 
$url = "https://iiko.biz:9900/api/0/auth/access_token"; 
$data = [ 
	"user_id" => "demoDelivery", 
	"user_secret"=> "PI1yFaKFCGvvJKi" 
]; 
 
//Запрос на токен который мне нужно использовать в следующем запросе 
$access_token = curl_get($url, $data); 
 
//Запрос на данные организации 
$getOrganizationInfo = curl_get("https://iiko.biz:9900/api/0//organization/list", ["access_token" => $access_token]); 
$getOrganizationInfo = json_decode($getOrganizationInfo); 
 
//Получить id организации 
$getId = $getOrganizationInfo[0]->id;   
 
//Получить меню 
$getMenu = curl_get("https://iiko.biz:9900/api/0/nomenclature/" . $getId . "?access_token=" . $access_token); 
 
//Данные пользователя 
$name = "Иван"; 
$phone = "71235678901"; 
$deliveryType = "Доставка"; 
$city = "Москва"; 
$street = "Красная площадь"; 
$building = "1"; 
$korpus = ""; 
$room = "14"; 
$comment = "comment";

Всё ломаете на первом шаге, т.к. не получив $access_token запускаю след. функцию в которой его использую...Заранее спасибо!

Answer 1

В представленном вами примере curl-запрос возвращает access_token c двойными кавычками в начале и конце:

string(89) ""enAr4qJE8rjK1pEmqNs8MRW0pcZKper1FLfYec9FPN5n2jpelnUBedO51IlJTy6IiMH74Nm_v5rjRVV0T9AvEQ2""

При попытке передать такой токен в следующие методы, api возвращает ошибку, ссылаясь на неверный токен.

Для решения проблемы вам необходимо убрать лишние кавычки.

$access_token = curl_get($url, $data);
var_dump($access_token); //string(89) ""enAr4qJE8rjK1pEmqNs8MRW0pcZKper1FLfYec9FPN5n2jpelnUBedO51IlJTy6IiMH74Nm_v5rjRVV0T9AvEQ2""
$token = trim($access_token,'"'); //string(87) "enAr4qJE8rjK1pEmqNs8MRW0pcZKper1FLfYec9FPN5n2jpelnUBedO51IlJTy6IiMH74Nm_v5rjRVV0T9AvEQ2"

Соответственно, далее уже передавать исправленный токен $token

READ ALSO
Массив с помощью цикла PHP

Массив с помощью цикла PHP

Как можно создать массив типа

239
Неверное перенаправление запроса в htaccess

Неверное перенаправление запроса в htaccess

Разрабатываю тестовый проект с использованием Apache 24, Php 5

189
Два параметра в ссылке

Два параметра в ссылке

У меня есть сайт со статьямиЗа их вывод отвечает файл list

194