Почему статический API Карт Google не может обрабатывать мои закодированные URI? - PullRequest
0 голосов
/ 19 сентября 2010

Я пытаюсь интегрировать некоторые фрагменты карт Google в свое веб-приложение Java с помощью статического API Карт Google. На данный момент я просто пытаюсь получить карту, любую карту. Их пример:

http://maps.google.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&sensor=false

отлично работает из моего браузера. Однако клиентское ПО Java HTTP, которое я использую (из компонентов Apache http, версия 4.0.2), настаивает на том, чтобы я кодировал свои URI, поэтому я получаю следующее:

http://maps.google.com/maps/api/staticmap?center%3D40.714728%2C-73.998672%26zoom%3D12%26size%3D400x400%26sensor%3Dfalse

, который не работает. К счастью, я бы не стал кодировать свои URI, но клиент Apache потерпит неудачу, если я этого не сделаю. Итак, мой вопрос, как я могу:

  • убедить клиента Apache использовать простой URI или
  • получить закодированный URI в форму, которую Google примет

Ответы [ 2 ]

1 голос
/ 19 сентября 2010

Кодировать только параметры URI.Ваш первый ?, затем ваш = и ваш & не должны быть в кодировке URI.

Ваш URI должен быть

http://maps.google.com/maps/api/staticmap?center=40.714728%2C-73.998672&zoom=12&size=400x400&sensor=false

Единственный символ в кодировке URI - %2C, , между вашими координатами.

0 голосов
/ 19 сентября 2010

Как предположил Пекка, вам нужно оставить в & и = незашифрованные.

Ваш закодированный URL

http://maps.google.com/maps/api/staticmap?center%3D40.714728%2C-73.998672%26zoom%3D12%26size%3D400x400%26sensor%3Dfalse

против незашифрованных & (%26) и = (%3D) (рабочий)

http://maps.google.com/maps/api/staticmap?center=40.714728%2C-73.998672&zoom=12&size=400x400&sensor=false

HTTP-клиент Apache HTTPComponents имеет множество интерфейсов, с помощью которых вы можете создать URL-адрес вашего запроса. Чтобы убедиться, что правильные части URL закодированы, я бы предложил использовать этот метод:

List<NameValuePair> qparams = new ArrayList<NameValuePair>();
qparams.add(new BasicNameValuePair("center", "40.714728,-73.998672"));
qparams.add(new BasicNameValuePair("zoom", "12"));
qparams.add(new BasicNameValuePair("size", "400x400"));
qparams.add(new BasicNameValuePair("sensor", "false"));
URI uri = URIUtils.createURI("http", "maps.google.com", -1, "/maps/api/staticmap", 
    URLEncodedUtils.format(qparams, "UTF-8"), null);
HttpGet httpget = new HttpGet(uri);
System.out.println(httpget.getURI());
  1. Еще пример http://hc.apache.org/httpcomponents-client-ga/tutorial/html/fundamentals.html
  2. API Docs http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/index.html
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...