Apache httpclient HTTPGET декодирование - PullRequest
0 голосов
/ 09 октября 2018

Я использую API, который кодирует немецкие умлауты в UTF-8.Мое приложение должно декодировать и кодировать эти символы.Кодирование не является проблемой и работает совершенно нормально.Чтобы добиться этого, я установил кодировку при создании нового StringEntity и добавил его к запросу следующим образом:

    HttpPost request = new HttpPost(getUrl);
    if(useProxy) {
        RequestConfig config = RequestConfig.custom()
                .setProxy(proxy)
                .build();
        request.setConfig(config);
    }
    request.addHeader("APIKey", apiKey);
    request.addHeader("Accept", "application/json");
    request.addHeader("Content-type", "application/json; charset=UTF-8");
    request.setEntity(new 
    StringEntity(JsonUtils.getJsonFromObject(nachricht), "UTF-8"));

Все специальные символы, такие как умляуты, отправляются и правильно сохраняются в серверной части.Однако когда я хочу получить эти данные, это приводит к некоторым ошибкам, которые выглядят следующим образом: enter image description here

Маленькие символы работают, но заглавные буквы - нет.Похоже, что ответ или HTTPGET-запрос имеет кодировку ISO_8859_1.Как я могу установить кодировку HTTPGET в UTF-8?Я уже пытался установить заголовок запроса следующим образом:

request.addHeader("Content-type", "application/json; charset=UTF-8");

И расшифровать содержимое ответа следующим образом:

byte[] bytes = EntityUtils.toString(responseEntity).getBytes();
String responseString = new String(bytes, "UTF-8");

Но поскольку кодировка ответа кажется неправильной, декодированиес UTF-8 приводит к ошибке ..

...