2015-01-26 1 views
0

У меня есть следующий код, чтобы отправить запрос WFS к локально запущенному экземпляру GeoServer с помощью Apache HTTP-клиент-4.1 библиотека:Получение результатов запроса WFS к GeoServer как UTF-8

 ThreadSafeClientConnManager connectionMngr = new ThreadSafeClientConnManager(); 
     DefaultHttpClient httpClient = new DefaultHttpClient(this.connectionMngr); 
     HttpPost httpPost = new HttpPost(wfsUrl); 
     httpPost.setEntity(new StringEntity(wsft, HTTP.UTF_8)); 

     log.debug("Submitting WSFT request: " + wsft); 

     BasicResponseHandler responseHandler = new BasicResponseHandler(); 
     String result = httpClient.execute(httpPost, responseHandler); 

     log.debug("Result of WSFT request: " + result); 

двутавровых данных am из базы данных ГИС закодирован в UTF-8, и все функции, которые я ожидаю найти, найдены. Тем не менее, любые специальные символы не печатаются должным образом моими операциями отладки или правильно отображаются в интерфейсе моего приложения (веб-приложение Spring MVC).

Я знаю, что значения хранятся правильно в моей базе данных ГИС, поскольку я вижу их через SQL-клиент, и они печатаются так, как я ожидал. Я также могу видеть имена дорог и т. Д., Которые используют специальные символы, правильно печатаются на моих слоях карты, что предполагает правильность настройки GeoServer.

+1

смотрит на меня как 'BasicResponseHandler' по умолчанию для' EntityUtils.toString (HttpEntity) ', который по умолчанию соответствует кодировке ISO-8859-1. Измените, как вы читаете объект ответа на какой-то метод, который заставляет UTF-8 – Alex

ответ

1

Вместо передачи в BasicResponseHandler, используйте HttpClient.execute(HttpUriRequest) метод, который возвращает HttpResponse, а затем использовать EntityUtils.toString(HttpEntity, "UTF-8"), псевдо:

HttpResponse r = httpClient.execute(httPost) 
String utf8encodedEntity = EntityUtils.toString(r.getEntity(), "UTF-8"); 
+0

Работал отлично, спасибо. –

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