2016-12-08 18 views
1

Я получаю детали заказа через заказ Flipkar Api.It дает первые 20 (0-20) результат за раз и для последующих записей дает URL следующей страницы. Для выборки Следующие 20 записей (20-40) мы снова должны вызвать скручивание с следующей страницей URL и получать заказы .FOR это я, используя код ниже:Получение данных о заказах через flipkart api с помощью PHP (как вызвать функцию без объявления функции перезаписи)

$listingbulk=array(); 
$headers = array(
      'Cache-Control: no-cache', 
      'Content-type: application/json', 
      'Authorization: Bearer '.$fkt 
      ); 
$bulkjson= '{ 
    "filter": { 
     "orderDate": { 
     "fromDate": "'.$orderfrom.'", 
     "toDate": "'.$orderto.'" 
     } 
    } 
}'; 
$urlbulk = "https://api.flipkart.net/sellers/v2/orders/search"; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL,$urlbulk); 
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $bulkjson); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
$resultbulksku = curl_exec($curl); 
$listingbulk[] = json_decode($resultbulksku); 
if (curl_errno($curl)) { 
    echo 'Error:' . curl_error($curl); 
} 
curl_close ($curl); 
$nextPageUrl= $listingbulk[0]->nextPageUrl; 
if ($nextPageUrl !=''){ 
    $newpageurl= orderFk($nextPageUrl,$headers); 
    if ($newpageurl !='') { 
     $newpageurl2= orderFk($newpageurl,$headers); 
     if ($newpageurl2 !=''){ 
      $newpageurl3= orderFk($newpageurl2,$headers); 
     } 
    } 
} 

Функции здесь:

function orderFk($nextPageUrl,$headers){ 
    $fp = fopen('order/order'.$currenttime.'.csv',"a"); 
    $urlbulk1 = "https://api.flipkart.net/sellers/v2/".$nextPageUrl; 
    $curl1 = curl_init(); 
    curl_setopt($curl1, CURLOPT_URL,$urlbulk1); 
    curl_setopt($curl1, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl1, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($curl1, CURLOPT_HTTPHEADER, $headers); 
    $resultbulksku1 = curl_exec($curl1); 
    $listingbulk1[] = json_decode($resultbulksku1); 
    if (curl_errno($curl1)) { 
      echo 'Error:' . curl_error($curl1); 
    } 
    curl_close ($curl1); 
    $listingbulk=$listingbulk1; 
    $newnextPageUrl= $listingbulk1[0]->nextPageUrl; 
    return $listingbulk;  
} 

Я хочу, чтобы if else условие динамически, поэтому, если «next pageurl» существует в ответ, он должен снова вызвать ту же функцию с новым URL-адресом (без функции вызова несколько раз, если условие else). Если у кого-то есть решение для этого, ответьте. (Ответ на рабочий пример был бы более полезен)

ответ

0

Я предлагаю что-то вроде этого, внутри функции заказа используйте цикл while, выход из ошибки или цикла превышают максимальную. В $ list у вас есть все ответы.

function orderFk($nextPageUrl,$headers){ 
    $page = 1; 
    $maxpage = 100; 
    $exit = 0; 
    $list = array(); 
    while(strlen($nextPageUrl)){ 
     $urlbulk = "https://api.flipkart.net/sellers/v2/".$nextPageUrl; 
     $curl = curl_init(); 
     curl_setopt($curl, CURLOPT_URL,$urlbulk); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
     $resultbulk = curl_exec($curl); 
     $nextPageUrl = ''; 
     if(curl_errno($curl)) { 
      $exit = 1; 
     } 
     curl_close($curl); // close before exit while loop 
     if($exit==1 || $page>$maxpage){ 
      break; 
     } 
     $listingbulk = json_decode($resultbulk); 
     if(strlen($listingbulk[0]->nextPageUrl)>0){ 
      $nextPageUrl = $listingbulk[0]->nextPageUrl; 
     } 
     $list[] = $listingbulk; 
     $page++; 
    } 
    return $list; 
    } 
+0

URL страницы есть строка, как: [nextPageUrl] =>/заказы/поиск/ewogICJzb3J0IiA6IHsKICAgICJmaWVsZCIgOiAicGlja3VwX2RhdGUiLAogICAgIm9yZGVyIiA6ICJhc2MiCiAgfSwKICAiZmlsdGVyIiA6IHsKICAgICJzZWxsZXJfaWQiIDogImExY2E4MWNmMTllZjQ0NzAiLAog – Urvashi

+0

в этом случае функция будет выглядеть как ваш orderFk ($ nextPageUrl, $ заголовки), но в цикле, на вершине, создавать новые constant $ currentPageUrl = $ nextPageUrl, после того, как curl_exec установил эту константу как null, после curl_error создайте инструкцию IF, где u проверит, существует ли $ listingbulk [0] -> nextPageUrl, если существует, то обновляет $ currentPageUrl = $ listingbulk [0] -> nextPageUrl ; Я ИЗМЕНИЮ ME ANSEWR –