2017-10-23 5 views
0

Ich versuche, eine Anfrage an eine API zu stellen. Das Problem liegt vor, wenn in der Ergebnismenge mehr als 50 Datensätze vorhanden sind. Die API teilt das Ergebnis in "Seiten" von jeweils 50 Datensätzen auf. Ich versuche, ein einzelnes Array zu erhalten, das alle Ergebnisse enthält, bevor ich in der Datenbank speichern. Unten ist mein Code:PHP und Curl: Alle Ergebnisse von einer mehrseitigen Curl Anfrage erhalten

<? 
$url = 'http://developer-api.bringg.com/partner_api/users'; 

$data_string = array(
'access_token' => "<YOUR ACCESS TOKEN>", 
'timestamp' => date('Y-m-d H:i:s'), 
'company_id' => <YOUR COMPANY ID>, 
'page' => 3 //this is the page key that needs to be specified 
); 

$secret_key = "<YOUR SECRET KEY>"; 

$signature = hash_hmac("sha1", http_build_query($data_string), 
$secret_key); 

$data_string["signature"] = $signature; 

$content = json_encode($data_string); 

$ch=curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $content); 
curl_setopt($ch, CURLOPT_HTTPHEADER, 
array('Content-Type:application/json', 
'Content-Length: ' . strlen($content)) 
); 

$json_response = curl_exec($ch); 

$status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

if ($status != 200) { 
die("Error: call to URL $url failed with status $status, response 
    $json_response, curl_error " . curl_error($curl) . ", curl_errno " . 
curl_errno($curl)); 
} 

curl_close($ch); 

$response = json_decode($json_response, true); 
?> 

ich nicht die Anzahl der Datensätze wissen kann ich so weiß ich nicht, wie dynamisch die Seitennummer ändern. Gibt es eine Möglichkeit, mehrere Anfragen zu machen und vielleicht die Seitenzahl mit Schleifen zu ändern und dann alle Ergebnisse in einem Array zu speichern. Bitte helfen Sie mir, ich bin neu in Arrays und Curl.

Antwort

1

machen Sie ein Array, das alle Ergebnisse enthält, die Sie bisher erhalten haben.

dann auf der ersten Seite beginnen. Hol die Ergebnisse. Zusammenführen der Ergebnisse dieses Abrufs mit dem Array . dann erhöhen Sie die Seite um 1. Jetzt wiederholen Sie diesen Prozess, bis Sie Null Ergebnisse in einem Abruf erhalten. Glückwunsch, du hast alle Ergebnisse. grundsätzlich

$results = array(); 
while (true) { 
    ++ $data_string ["page"]; 
    fetch(); 
    if (empty ($newResults)) { 
     break; // zero results means we finished the last page, so break out of the loop. 
    } 
    array_push ($results, $newResults); 
}