json — PHP curl не возвращает весь ответ

Я пытаюсь использовать API в php, который (как обычно) возвращает большой ответ json с запрошенными данными.

Это работает так:

1) Я должен сделать запрос с данными, которые я хочу (в определенном формате, который здесь не важен), а затем,

2) Посетите другой URL, где с параметром get, который я получаю из ответа первого шага, чтобы получить фактические данные.

Проблема в том, что я попытался использовать curl () и get_file_contents () для получения данных json, но мне кажется, что я не получаю весь json. Я захожу на URL из моего браузера, получаю json вручную, сравниваю и проверяю, совпадают ли эти два.

Что может быть не так?

Вот мой код:

$tp = new TravelPayoutApi();
$req = $tp->request_one_way('en', 'Y', 1,0,0, 'BER', 'PAR', '2017-10-22');
//$req = $tp->requestRoundTrip('en', 'Y', 1,0,0, 'BER', 'PAR', '2017-10-22','2017-10-25');
echo "req =" . $req;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://api.travelpayouts.com/v1/flight_search"); // $apiURL = "http://api.travelpayouts.com/v1/flight_search";

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// $response = array();
// echo $response;
$response = curl_exec($ch);
curl_close($ch);
$response = json_decode($response, true);
$search_id = $response['search_id'];
echo $search_id;

Это была часть, которая получает параметр, который мне нужен для сбора данных

Вот мои усилия, чтобы получить и повторить их:

$results = file_get_contents("http://api.travelpayouts.com/v1/flight_search_results?uuid=" . $search_id);
var_dump($results); // to see if this is really json
// $ch1 = curl_init();
// $resultsURL = "http://api.travelpayouts.com/v1/flight_search_results?uuid=" . $search_id;
// echo "This is the results URL:" . $resultsURL;
// curl_setopt($ch1, CURLOPT_URL, $resultsURL);
// curl_setopt($ch1, CURLOPT_RETURNTRANSFER,1);

// $results = curl_exec($ch1);
// $results = json_encode($results);
// curl_close($ch1);

Комментируемые строки в и являются различными сценариями, которые я пробовал. Взгляни на них тоже.

РЕДАКТИРОВАТЬ:

Хорошо, я попробовал оригинальную команду curl API (curl -v -H ‘Accept-Encoding: gzip, deflate, sdch’ htttp: //api.travelpayouts.com/v1/flight_search_results? uuid = my_id_here —compressed), и это работает как шарм. Но похоже, что я не могу заставить его работать с php curl. Я всегда получаю урезанные результаты. Что я могу сделать с этим?

Мой текущий код для получения результатов:

$ch1 = curl_init();

curl_setopt($ch1, CURLOPT_URL, $resultsURL);
curl_setopt($ch1, CURLOPT_HTTPHEADER, array('Accept-Encoding: gzip,deflate,sdch'));
curl_setopt($ch1, CURLOPT_ENCODING, 'gzip,deflate,sdch');
// curl_setopt($ch1, CURLOPT_CONNECTTIMEOUT, 0);
//curl_setopt($ch1, CURLOPT_TIMEOUT, 15); // number of seconds to allow curl to execute

$results = curl_exec($ch1);
echo($results);
curl_close($ch1);

2

Решение

Поскольку вы получаете данные обратно, попробуйте следующее, чтобы проверить, все ли необходимые данные будут вставлены в файл.

$results = file_get_contents("http://api.travelpayouts.com/v1/flight_search_results?uuid=" . $search_id);
$fp = fopen($path_to_file, "r");
$fileLines = array();
while (!feof($fp)){
array_push(fgets($fp),$results);
}
fclose($$fp);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]