2014-01-21 3 views
0

Я работаю над небольшим проектом для курса программирования здесь, в моем университете. Он включает в себя получение данных из google api (JSON) и предоставление некоторой части этой информации пользователю.Var_Dump (ошибка 400 - плохой запрос)

function compare($city, $start, $destination) 
{ 
    // merge city with start and destination 
    $city_start = $start . ', ' . $city; 
    $city_destination = $destination . ', ' . $city; 

    // reject symbols that start with^
    if (preg_match("/^\^/", $city) OR preg_match("/^\^/", $start) OR preg_match("/^\^/", $destination)) 
    { 
     return false; 
    } 

    // reject symbols that contain commas 
    if (preg_match("/,/", $city) OR preg_match("/,/", $start) OR preg_match("/,/", $city)) 
    { 
     return false; 
    } 

    // determine url 
    $url = "http://maps.googleapis.com/maps/api/directions/json?origin=$city_start&destination=$city_destination&sensor=false&mode=bicycling"; 
    echo $url; 

    // open connection to google maps 
    $curl_session = curl_init($url); 
    curl_setopt($curl_session, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl_session, CURLOPT_HEADER, 0); 

    // get data from json output 
    $json = curl_exec($curl_session); 
    curl_close($curl_session); 
    var_dump($json); 
} 

Приведенный выше код возвращает ошибку 400 в var_dump, где $ города, $ начала и $ назначения соответственно начиная адрес, адрес получателя и город, в котором адреса принадлежат. URL-адрес, хранящийся в $ url, работает хорошо и возвращает вывод JSON при вводе в браузере.

Может ли кто-нибудь сказать мне, что я делаю неправильно?

Приветствия,

D.

+0

@MarcB Он уже есть, проверить его код. Плюс он даже упомянул, что url, хранящийся в '$ url', работает при вставке в браузер ... – superphonic

+0

Да, извините, пропустил это полностью ... радости в псевдо-понедельник здесь. –

+0

Не могли бы вы привести пример готового URL-адреса, который пытается выполнить Curl. – superphonic

ответ

1

Вы можете попробовать и urlencode переменные:

$city_start = urlencode($start . ', ' . $city); 
$city_destination = urlencode($destination . ', ' . $city); 
+0

Когда я это делаю, var_dump возвращает 'boolean false'. Если я что-то не упущу, это не поможет мне получить больше? Спасибо за усилия, хотя. =) – user3219795

+0

Я не могу себе представить, почему 'urlencode()' должен просто заменить пробелы и т. Д. В url с дружественным URL-адресом. – superphonic

+0

См. Мой пересмотренный ответ .... – superphonic

Смежные вопросы