2015-04-08 6 views
1

Цель:Google Distance Matrix API - Error = "HTTPError: HTTP Error: 400"

  • Возврат привода раз для 99 человека (я начинаю с одной, 'Истоки' и 'Направления', чтобы обеспечить У меня правильный формат), «Origins» и «Destinations» в формате JSON.

Однако, я получаю следующее сообщение об ошибке: "HTTPError: HTTP Error: 400"

В целом, я использую Python 2.7, и это моя первая попытка API, так что любая помощь по причине сильно оценили!

FYI: Я использую следующий GitHub, как план структурировать мой код: https://github.com/googlemaps/google-maps-services-python/blob/master/googlemaps/distance_matrix.py

Код:

import googlemaps 
from googlemaps import convert 
from googlemaps.convert import as_list 


#API key 
key = 'xxxxx' 
client = googlemaps.Client(key) 


#establishes: drive duration, english, non-metric measurements 
def distance_matrix(client, origins, destinations, 
        mode="driving", language="en", avoid=None, units="imperial", 
        departure_time="calendar.timegm(time.gmtime())", arrival_time=None, transit_mode=None,transit_routing_preference=None): 

    #establishes "origin" and "destinations" geoInfo via the .json structure 
    params = { 
    "origins": '1218 3rd St, Santa Monica, 90401, CA', 
    "destinations": '90278' 
} 

    if mode: 
     # NOTE(broady): the mode parameter is not validated by the Maps API 
     # server. Check here to prevent silent failures. 
     if mode not in ["driving", "walking", "bicycling", "transit"]: 
      raise ValueError("Invalid travel mode.") 
     params["mode"] = mode 

    if language: 
     params["language"] = language 

    if avoid: 
     if avoid not in ["tolls", "highways", "ferries"]: 
      raise ValueError("Invalid route restriction.") 
     params["avoid"] = avoid 

    if units: 
     params["units"] = units 

    if departure_time: 
     params["departure_time"] = convert.time(departure_time) 

    if arrival_time: 
     params["arrival_time"] = convert.time(arrival_time) 

    if departure_time and arrival_time: 
     raise ValueError("Should not specify both departure_time and" 
         "arrival_time.") 

    if transit_mode: 
     params["transit_mode"] = convert.join_list("|", transit_mode) 

    if transit_routing_preference: 
     params["transit_routing_preference"] = transit_routing_preference 

    return client._get("/maps/api/distancematrix/json", params) 


print distance_matrix(client, "origins", "destinations") 

Полная Traceback Сообщение об ошибке:

HTTPError         Traceback (most recent call last) 
<ipython-input-23-3127b996dc24> in <module>() 
    58 
    59 
---> 60 print distance_matrix(client, "origins", "destinations") 
    61 

<ipython-input-23-3127b996dc24> in distance_matrix(client, origins, destinations, mode, language, avoid, units, departure_time, arrival_time, transit_mode, transit_routing_preference) 
    55   params["transit_routing_preference"] = transit_routing_preference 
    56 
---> 57  return client._get("/maps/api/distancematrix/json", params) 
    58 
    59 

C:\Users\AppData\Local\Continuum\Anaconda2\lib\site-packages\googlemaps\client.pyc in _get(self, url, params, first_request_time, retry_counter, base_url, accepts_clientid, extract_body) 
    179    if extract_body: 
    180     return extract_body(resp) 
--> 181    return self._get_body(resp) 
    182   except googlemaps.exceptions._RetriableRequest: 
    183    # Retry request. 

C:\Users\AppData\Local\Continuum\Anaconda2\lib\site-packages\googlemaps\client.pyc in _get_body(self, resp) 
    187  def _get_body(self, resp): 
    188   if resp.status_code != 200: 
--> 189    raise googlemaps.exceptions.HTTPError(resp.status_code) 
    190 
    191   body = resp.json() 

HTTPError: HTTP Error: 400 

ответ

0

Согласно документации Google w Если вы получите код ответа 400, это может быть либо Недопустимый параметр, либо badRequest. В случае:

Неверный параметр: Указывает, что параметр запроса имеет недопустимое значение. В полях locationType и location в ответе об ошибке содержится информация о том, какое значение было недопустимым.

Не повторите попытку, не устраняя проблему. Необходимо указать допустимое значение для параметра, указанного в ответе об ошибке.

Плохой запрос: Указывает, что запрос недействителен. Например, отсутствовал родительский идентификатор, или комбинация запрошенных размеров или показателей недействительна.

Не повторите попытку, не устраняя проблему. Вам нужно внести изменения в запрос API, чтобы он работал.

Я думаю, что проблема связана с ключом API. Вы можете использовать API-интерфейс Direction, если вы не запрашиваете квоту даже без API_KEY. И в примере кода, представленном в коде, я не вижу API_KEY, который помещается в параметр клиента.

#API key 
key = 'xxxxx' 
client = googlemaps.Client(key) 

Попробуйте удалить это.

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