Meine URL ist:PHP curl schlecht Anfrage 400 - mapquest Geokodierung
http://www.mapquestapi.com/geocoding/v1/batch?key=dNBvDLtTx85L3akdg8vBoHQXrWpDJSEI&location=HEBRON,KY,US&location=CINCINNATI,KY,US&location=CINCINNATI,KY,US&location=BEDFORD PARK,IL,US&location=BEDFORD PARK,IL,US&location=HODGKINS,IL,US&location=HODGKINS,IL,US&location=HODGKINS,IL,US&location=BALDWIN PARK,CA,US&location=BALDWIN PARK,CA,US&location=BALDWIN PARK,CA,US&location=,,US
Es ist lang, aber es sollte mit https://www.mapquestapi.com/geocoding/
Das Geheimnis entfaltet sich, wenn ich den folgenden PHP-Code-kompatibel sein:
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_URL, $urlForGeocode);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
$return = curl_exec ($ch);
curl_close ($ch);
echo($return);
$output = shell_exec('curl ' . $urlForGeocode);
echo($output);
Die Variable $urlEncode
enthält den Wert der obigen URL. Die erste Ausgabe ist:
<html><body><b>Http/1.1 Bad Request</b></body> </html>
Der Ausgang der zweiten Anforderung ist:
{
"info": {
"statuscode": 400,
"copyright": {
"text": "\u00A9 2016 MapQuest, Inc.",
"imageUrl": "http://api.mqcdn.com/res/mqlogo.gif",
"imageAltText": "\u00A9 2016 MapQuest, Inc."
},
"messages": ["no 'json' parameter found"]
},
"options": {
"maxResults": -1,
"thumbMaps": true,
"ignoreLatLngInput": false
},
"results": [{
"providedLocation": {},
"locations": []
}]
}
Diese beiden unterschiedlichen cURL Anfragen im Grunde die gleiche Sache zurück. Wenn ich die cURL von meinem Terminal auf meinem lokalen Rechner starte, wird auch eine 400 zurückgegeben.
Wenn ich die URL in meinem Browser obwohl, bin ich nicht enttäuscht, und es gibt die Daten, die ich suche mit einem 200 Statuscode zurück.
Was ist ein Unterschied zwischen einer Browser-Anfrage und der cURL?
Versuchen hinzufügen 'curl_setopt ($ ch, CURLOPT_HTTPHEADER, array ('Accept: application/json'));' In Chrome, öffnen Sie dev tools> Netzwerk, finden Sie die Anfrage und drücken Sie Kopieren als Curl und Sie können alle Einstellungen sehen, die es verwendet, um diese Anfrage zu machen, damit Sie vergleichen können. –
Haben Sie versucht, die URL zu codieren, dh Leerzeichen in% 20 zu verwandeln? Um auch etwas anderes über eine Curl-Anfrage vs. Browser-Anfrage zu beantworten, ist der User-Agent. Haben Sie versucht, Ihren Browser-User-Agent zu crawlen? – chiliNUT
ihr beide habt recht ... Riesiger Dank für die Kopie als Curl. Ich tat das, schaute auf die URL, und das einzige, was anders war, waren die Leerzeichen. Ich glaubte nicht, dass es nur die Plätze waren, also habe ich das nicht direkt auf der Fledermaus versucht. Nun, war es. Witzigerweise habe ich urlencode() und rawurlencode() beide ohne Ergebnisse ausprobiert. – stackOverFlew