PHP curl bad request 400 – mapquest geocoding

Мой URL:

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 

Он длинный, но он должен соответствовать https://www.mapquestapi.com/geocoding/

Тайна разворачивается, когда я запускаю следующий код php:

 $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); 

Значение переменной $urlEncode содержит значение url выше. Первый выход:

 <html><body><b>Http/1.1 Bad Request</b></body> </html> 

Выходной сигнал второго запроса:

 { "info": { "statuscode": 400, "copyright": { "text": "\u00A9 2016 MapQuest, Inc.", "imageUrl": "http://img.ruphp.com/php/mqlogo.gif", "imageAltText": "\u00A9 2016 MapQuest, Inc." }, "messages": ["no 'json' parameter found"] }, "options": { "maxResults": -1, "thumbMaps": true, "ignoreLatLngInput": false }, "results": [{ "providedLocation": {}, "locations": [] }] } 

Эти два разных запроса cURL возвращают в основном то же самое. Когда я запускаю cURL с моего терминала на моей локальной машине, возвращается и 400.

Если я поместил URL-адрес в свой браузер, я не разочарован, и он возвращает данные, которые я ищу, с кодом состояния 200.

Чем отличается запрос на получение браузера и cURL?

Кажется, проблема $urlForGeocode с тем, как вы устанавливаете переменную $urlForGeocode .. используете ли вы ' или " ?

Он должен быть первым.

Второй запрос терпит неудачу, потому что есть (пробел) в поле URL, которое создает неверный запрос.

Подобно @Matt, предложенный ниндзя и @chiliNut, мне нужно было посмотреть на разницу между двумя запросами.

Единственное различие заключалось в пробелах. Я попытался запустить php-функцию urlencode() а также функцию php rawurlencode() и не повлиял на результат.

Это то, что я использую сейчас вместо кодировки url:

 $urlForGeocodeURLEncoded = str_replace(' ', '%20', $urlForGeocode); 

введите описание изображения здесь