2016-06-04 1 views
3


Ich habe genau wie
http://business.skyscanner.net/portal/en-GB/Documentation/FlightsLivePricingList
in der API-Dokumentation gezeigt, aber wenn ich es nennen gibt diesen Fehler zurückSkyScanner API-Fehler, wenn sie von PHP genannt

HTTP/1.1 100 Continue HTTP/1.1 500 Internal Server Error Cache-Control: private Content-Type: application/json Date: Sat, 04 Jun 2016 06:23:48 GMT Connection: close Content-Length: 2 {} 

und hier mein Code in PHP ist

<? 
$url = 'http://partners.api.skyscanner.net/apiservices/pricing/v1.0/'; 
$data = array('apiKey' => 'de995438234178656329029769192274', 'country' => 'BR', 'currency' => 'BRL', 
'locale' => 'pt-BR', 'originplace' => 'SDU-iata', 'destinationplace' => 'GRU-iata', 'outbounddate' => '2016-09-23', 
$headers = 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8'; 
$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded', 'Accept: application/json')); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch); 
curl_close($ch); 
printf($result); 
?> 

eine Idee, was schief läuft?

Vielen Dank im Voraus für jede Art

+0

Haben Sie den Parameter "Erwachsene" vergessen? –

+0

Danke für die Antwort. Aber deine Antwort ergibt keinen Sinn. Was meinst du genau "Erwachsenenparameter"? –

+0

Die Dokumentation, auf die Sie verweisen, sagt, dass der Parameter "Erwachsene" erforderlich ist, aber ich sehe es nicht in Ihrem Code. –

Antwort

2

Also ich denke, die PHP den falschen Anforderungstyp senden, da die HTTP-Header wurden als Array gesendet werden (so standardmäßig auf ‚multipart/formdata‘). Wenn Sie http_build_query für dieses Array verwenden, wird es korrekt als 'x-www-form-urlencoded' gesendet.

Ich habe Dinge aufgeräumt, einige Überschneidungen in den curl Optionen entfernt und richtig eine 201-Antwort auf Ihrem Beispiel bekommen:

<? 
$url = 'http://partners.api.skyscanner.net/apiservices/pricing/v1.0/'; 
$data = array('apiKey' => 'de995438234178656329029769192274', 'country' => 'BR', 'currency' => 'BRL', 
'locale' => 'pt-BR', 'originplace' => 'SDU', 'destinationplace' => 'GRU', 'outbounddate' => '2016-09-23', 'locationschema' => 'Iata', 'adults' => 1); 
$httpdata = http_build_query($data); 
$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $httpdata); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded', 'Accept: application/json')); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$response = curl_exec($ch); 
curl_close($ch); 
var_dump($response); 
?> 

Hoffnung, die hilft, werde ich ein Auge auf dem Faden Falls Sie noch Fragen haben, zögern Sie nicht, uns eine Anfrage zu schicken oder die FAQs hier zu lesen: https://support.business.skyscanner.net/hc/en-us

+0

Vielen Dank David. Sicher hilft es mir. Aber nach einem weiteren Tag kann ich nicht finden, warum wir die richtige Antwort bekommen. –

+1

Das ist also auch dokumentiert - die Antwort hat keinen Inhalt, daher befindet sich der Sitzungsschlüssel im Antwortheader. Halten Sie Ausschau nach dem "Location" -Header-Wert und es ist da drin ... Hoffe, dass hilft! –

Verwandte Themen