PHP curl bad request 400 — геокодирование mapquest

Мой 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://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": []
}]
}

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

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

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

4

Решение

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

Единственной разницей были пробелы. Я пытался запустить urlencode() Функция PHP, а также rawurlencode() Функция php, и ни один не повлиял на результат.

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

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

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

1

Другие решения

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

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

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

0

По вопросам рекламы [email protected]