вызов API с использованием php cURL не возвращает все страницы - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь попасть в API и заполнить таблицу базы данных возвращенными данными. Мне нужно получить более 9000 строк данных и только 100 строк данных на страницу. Я настраиваю циклы, чтобы контролировать, на какой странице я нахожусь, но возвращаются только первые 100 записей (первая страница).

В настоящее время мой код захватывает только две страницы для тестирования.

Я использую PHP cURL для достижения этой цели

for($pageLoop = 0; $pageLoop < 2; $pageLoop++){
  $curl2 = curl_init();
  curl_setopt_array($curl2, array(
    CURLOPT_URL => "https://SOME_SERVER/rest/search/?api_key=MY_API_KEY&searchTerm=&pageNumber=".$pageLoop."&pageSize=100",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
      "cache-control: no-cache"
    ),
  ));

  $response2 = curl_exec($curl2);
  $err2= curl_error($curl2);

  if(!curl_exec($curl2)){
    die('Error: "' . curl_error($curl2) . '" - Code: ' . curl_errno($curl2));
  }
  curl_close($curl2);

  for($itemLoop = 0; $itemLoop <  100; $itemLoop++){
    echo 'chpl product number yy: ' . $response['results'][$itemLoop]['chplProductNumber'] . '<br>';
  }//END ITEM LOOP        
}//END PAGE LOOP

Ожидаемые результаты - список элементов для каждой страницы. Всего на сегодняшний день 97 страниц, и я только получаю первую страницу. Спасибо

1 Ответ

0 голосов
/ 10 января 2019

Я думаю, вы звоните на страницу 0, которая не дает никаких результатов. Итак, на второй итерации вы впервые вызываете страницу 1.

Следовательно, получим только результат первой страницы.

Попробуйте это:

$pageLoop = 1;
do {
  $cl = curl_init();
  curl_setopt_array($cl, array(
    CURLOPT_URL => "https://SOME_SERVER/rest/search/?api_key=MY_API_KEY&searchTerm=&pageNumber=".$pageLoop."&pageSize=100",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
      "cache-control: no-cache"
    ),
  ));

  $response = curl_exec($cl);
  curl_close($cl);

  for($itemLoop = 0; $itemLoop <  100; $itemLoop++)
    echo 'chpl product number yy: ' . $response['results'][$itemLoop]['chplProductNumber'] . '<br>';

  $pageLoop++;
} while ($pageLoop <= 2);

Кроме того, я заметил несколько имен переменных, которые полностью не используются. например $err2 и $response2. Мое последнее редактирование немного убирает это.

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