OkHttp ответь мне не в UTF8, а в процентном кодировании - PullRequest
0 голосов
/ 07 мая 2020

я вызываю GET Api (API ModernMTT) с OkHttp (последняя версия), моя проблема в том, что ответ от сервера не в UTF-8, а в процентном кодировании, и я не понимаю, почему, я пытаюсь установить MINE в UTF-8 без результата. От CURL и Postman сервер отвечает хорошо. Значит проблема на OkHttp. Мой код

public static String translate(String string) throws IOException {
        OkHttpClient client = new OkHttpClient().newBuilder().addInterceptor(new FixEncodingInterceptor()).build();
        Request request = new Request.Builder()
                .url("https://api.modernmt.eu/translate?source=" + sourceLanguage + "&target=" + targetLanguage + "&q=" + string)
                .method("GET", null)
                .addHeader("MMT-ApiKey", apiKey)
                .build();
        try (Response response = client.newCall(request).execute()) {
            if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
            String stringTranslated= Objects.requireNonNull(response.body()).string();
            ResponseMTT responseMTT = new Gson().fromJson(stringTranslated, ResponseMTT.class);
            StandardCharsets.UTF_8));
            return responseMTT.getData().getTranslation();
        }
    }

response.body.string () возвращает этот формат:

%22Sconto%20del%2020%:%20%3CPAColor0xFF66CC33%3EUtilities%20%E2%86%92%20Capacity%20of%20load%3CPAOldColor%3E.

1 Ответ

0 голосов
/ 17 мая 2020

Можете ли вы попробовать установить заголовок «Accept-Charset» в UTF-8 и протестировать свой код? Я предполагаю, что Postman по умолчанию устанавливает заголовок accept charset на utf-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...