2011-05-11 4 views
0

Как настроить cURL для извлечения данных из карт yahoo api?yahoo maps api curl settings

Вот текущий код

curl_setopt($ch, CURLOPT_TIMEOUT, 5000); 
curl_setopt($ch, CURLOPT_URL, $geocodeurl); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$data = curl_exec($ch); 

Который возвращает 400 - Ошибочный запрос HTML-файл. Я проверил $geocodeurl, и это действительный XML-файл, поэтому я считаю, что проблема должна быть параметрами cURL?


$ geocodeurl является

http://where.yahooapis.com/geocode?appid=** My App ID **&q=Battle%20Creek,MI&gflags=R 
+0

Вы используете http: // (или https: //) перед URL-адресом? Возможно, вы могли бы поделиться $ geocodeurl –

+0

@Topener - общий – jisaacstone

ответ

0

ОК, как обычно, я не распознали проблему. cURL был в порядке, но переменная q= не проходила через какой-либо вид urlencode.

Работал в моем браузере, потому что Firefox любезно изменил на %20. С cURL вам нужно быть более осторожным. , , ,

1

Я написал простую оболочку класса, чтобы получить базовый адрес как php-объект, который может помочь вам выполнить работу! Я также добавил оболочку геокодирования google.

, чтобы ответить на ваш вопрос, все нормально с URL вы в курсе, но да, как вы упомянули в вашем ответе вы должны UrlEncode Params

$query = $this->url."?appid=".$this->appid."&flags=".$this->format; 
$query .= "&location=".urlencode($address); 

Вот ссылка на мой класс обертку

https://github.com/mrpollo/Geocoding-API