2015-01-25 2 views
1

В моем приложении я должен использовать веб-маршрутизации службы и я использую API OSRM серверавеб-сервис не работает больше

https://github.com/Project-OSRM/osrm-backend/wiki/Server-api

Я не знаю, почему, но до вчерашнего дня не morming с сервера API работы , Сейчас он не работает, и это дает мне плохой запрос

http://router.project-osrm.org/viaroute?loc= "+ p.getLat() +", "+ p.getLon() +" & LOC = "+ d.getLat() +", «+ d.getLon(); Я использую Java и протокол REST

String sito="http://router.project-osrm.org/viaroute?loc="+p.getLat()+","+p.getLon()+"&loc="+d.getLat()+","+d.getLon()"; 
     Client client = ClientBuilder.newClient(); 

       WebTarget target = client.target(sito); 


       Response res = target.request().get(); 


       System.out.println(res.readEntity(String.class)); 

Я Получить "BAD GATEWAY"

+0

Какой язык вы используете? Не могли бы вы отправить [пример кода] (http://stackoverflow.com/help/mcve), который вы используете? – GoBusto

+0

@GoBusto Я отредактировал сообщение – prova

+0

Итак, это Java? – GoBusto

ответ

0

Глядя в поджигатель в ссылке, предоставленной @scai, вы можете увидеть Content-Encoding = = gzip. Вы должны установить заголовок Accept-Encoding. Это можно сделать с помощью метода удобной цепи acceptEncoding, на InvocationBuilder. Так что-то вроде

WebTarget target = client.target(uri); 
    String response = target.request() 
      .accept("application/json") 
      .acceptEncoding("gzip") 
      .get(String.class); 

Не уверен, что клиентская библиотека JAX-RS вы используете, но Stadard Client API не приходит с любыми фильтрами/перехватчики для декодирования GZIP, но если вы используете Джерси клиент, то вы можете зарегистрировать GZipEncoder с клиентом.

client.register(org.glassfish.jersey.message.GZipEncoder.class); 

Протестировано, и это отлично работает для меня. У вас была такая же проблема, как и перед внесением вышеуказанных изменений.

Если вы не работаете с Джерси, я уверен, что любая реализация, которую вы используете, должна иметь некоторый фильтр GZIP. Я знаю, что Рестайз делает. Если реализация не один, вы всегда можете использовать в Java GZIPInputStream, чтобы обернуть поток ответа

Response response = target.request() 
     .accept("application/json") 
     .acceptEncoding("gzip") 
     .get(); 

GZIPInputStream is = new GZIPInputStream(
          response.readEntity(InputStream.class)); 
+0

yesss it works !!! Спасибо за помощь! – prova