2013-08-27 2 views
0

Я пытаюсь использовать геокодирование через API REST API MapQuest, чтобы получить адрес для набора координат lat/long. Я использую Джерси-клиент на стороне сервера, чтобы вытащить эти данные.Джерси Клиент зависает по запросу MapQuest

По какой-то причине, когда GET работает, он никогда не возвращается и, в конце концов, отключается. Сначала мне показалось, что я пытаюсь получить доступ к ресурсу, которого не было или что-то еще. Однако, если я беру строковое значение ресурса, к которому я обращаюсь, и вставляю его в окно браузера, я возвращаю действительный JSON для координат, которые я указываю. Я не получаю никакого вывода в своих журналах, что указывает на то, что может быть проблемой.

Вот мой код:

private void getLocation(UserTemplate template) throws ConnectException 
{  
    double lon = template.getLocation().getCoordinates()[0]; 
    double lat = template.getLocation().getCoordinates()[1]; 

    Client c = Client.create(); 
    WebResource resource = c.resource(Adapter.geocodeUrl + "?key=" + 
     Adapter.mapquestKey + "&location=" + lat + "," + lon); 

    ClientResponse response = 
     resource.accept(MediaType.APPLICATION_JSON) 
     .type(MediaType.APPLICATION_JSON) 
     .get(ClientResponse.class); 
} 

Почему это таймаут?

Любая помощь будет оценена!

ответ

0

Я не знаю, почему это тайм-аут, но я имел успех, используя WebTarget, а не WebResource:

Client client = ClientBuilder.newClient(); 

WebTarget target = client.target("http://open.mapquestapi.com/elevation/v1/profile" 
     + "?key=" + MAPQUEST_API_KEY + "&latLngCollection=" + "39.74012,-104.9849,39.7995,-105.7237,39.6404,-106.3736"); 

Invocation.Builder invocationBuilder = 
     target.request(MediaType.APPLICATION_JSON_TYPE); 
Response response = 
     invocationBuilder.get(); 
System.out.println(response.getStatus()); 
System.out.println(response.readEntity(String.class)); 

ли вы найти решение вашей проблемы?

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