Zusammenfassung: Ich benutze PHP/CURL, um einige JSON-Daten von Vimeo zu bekommen.PHP + cURL, Parsing Header-Daten
Dies wurde gut funktioniert, (wenn auch ihre ungerade "Ratenbegrenzung Anforderungen), auf folgende Arten:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $json_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array("authorization: Bearer ".$access_token)
));
$response = curl_exec($curl);
$response_info = curl_getinfo($curl);
$err = curl_error($curl);
curl_close($curl);
die gut arbeitet, wenn ich zu JSON verdeckte und die Datenausgabe wie so verwenden:
$vimeoJSON = json_decode($response, true);
echo '<h2 class="title">'.$vimeoJSON['name'] . '</h2>';
sendet jedoch Vimeo einige benötigten Daten (aktuelles Rate-Limit und die verbleibenden limit..etc) in der Kopfzeile RESPONSE zurück ...
Also suchte ich mich um und las, dass Sie hinzufügen müssen dies den cURL Optionen/params:
CURLOPT_HEADER => true,
Also tat ich, dass:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $json_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HEADER => true,
CURLOPT_HTTPHEADER => array("authorization: Bearer ".$access_token)
));
$response = curl_exec($curl);
$response_info = curl_getinfo($curl);
$err = curl_error($curl);
curl_close($curl);
und verwendet diese Informationen, zu brechen:
//get response header details
list($headers, $body) = explode("\n\n", $response, 2);
$headers = explode("\n", $headers);
foreach ($headers as $header) {
list($key, $value) = explode(':', $header, 2);
$headers[trim($key)] = trim($value);
}
Und zeigte es etwa so:
echo '<p>';
echo "Rate Limit: " . $headers['X-RateLimit-Limit'];
echo "/Remaining Limit: " . $headers['X-RateLimit-Remaining'] . '<br>';
echo "Reset Time: " . $headers['X-RateLimit-Reset'] . '<br>';
echo '</p>';
An diesem Punkt war ich - Erhalten meiner benötigten Header-Antwortdaten von Vimeo ..
aber der Rest der JSON-Daten ist jetzt weg/nicht mehr angezeigt.
dh:
echo '<h2 class="title">'.$vimeoJSON['name'] . '</h2>';
mehr nicht angezeigt.
Wenn ich diese Zeile aus kommentieren: CURLOPT_HEADER => true,
Diese Arbeit wieder .. (aber bekomme ich meine Header-Antwort nicht mehr Daten von Vimeo
Frage ist:.
- Wie kann ich meinen Code aktualisieren für beide ?? die Header-Antwortdaten von Vimeo .. und noch in der Lage zu ermöglichen, die $ vimeoJSON [ ‚xxxx‘] Daten zu verwenden, die ich während meiner App durchlöchert haben?
@Taylor
Wenn Ihr Code Probe mit (ich weiß, auf dem Netz an anderer Stelle gefunden)
//temp
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
echo "HEADER SIZE: " . $header_size . "<br><br>";
echo "HEADER: " . $header . "<br><br>";
echo "BODY: <pre>" . $body . "</pre><br><br>";
spielt keine Rolle, wenn ich die ausführliche oder Header auf true gesetzt ..
der zurück einbetten Code ist kaputt?
scheint mit doppelten Anführungszeichen entkommen oder etwas zu kommen:
^iframe src=\"https://player.vimeo.com/video/171002772?badge=0&autopause=0&player_id=0\" width=\"900\" height=\"450\" frameborder=\"0\" title=\"How to Save A Dying LVAD - Zachary M. Shinar, MD\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe^
vs
^iframe src="https://player.vimeo.com/video/171002772?badge=0&autopause=0&player_id=0" width="900" height="450" frameborder="0" title="How to Save A Dying LVAD - Zachary M. Shinar, MD" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe^
Danke .. Das macht Sinn .. aber wie kann ich sie trennen? Gibt es eine gebaute Methode? – whispers
per Definition sind HTTP-Header durch eine Leerzeile vom Hauptteil getrennt. so ... gespalten auf die leere Zeile, und alles danach sollte nur der Körper sein. –
ahh .. also einfach manuell parsen/trennen (duh!) Entschuldigung für die dichte da! Ich (aus welchem Grund auch immer) dachte, dass es einen eingebauten CURL/OPT-Ansatz zum Trennen gab. Ich versuche es mal. (Antwort angenommen) Vielleicht setzen Sie das in Ihre volle Antwort für andere (die vielleicht auch ein Gehirn furzen), um es zu sehen! – whispers