Ответ с заголовком Content-Type: text / plain;charset = utf-8, дайте мне сообщение () с символами � - PullRequest
2 голосов
/ 13 июня 2019

Я создаю приложение для Android, используя Retrofit2 для связи с REST API. Все работает хорошо, кроме случаев, когда приложение получает текстовый ответ с пользовательским сообщением. Заголовок говорит мне, что тип содержимого указан в UTF-8, но когда я получаю Retrofit.message(), он печатает сообщение с символами..

Когда я делаю POST-запрос с помощью Почтальона, сообщение верное

Статус: 400 Código de documentmento não localizado.

Экземпляр модификации создается следующим образом:

    val instance: Retrofit by lazy {
        Retrofit.Builder()
            .baseUrl(createBaseUrl())
            .client(createClient())
            .addConverterFactory(GsonConverterFactory.create())
            .build()
    }

    private fun createClient() = OkHttpClient.Builder()
        .connectTimeout(BuildConfig.CONNECTION_TIMEOUT, TimeUnit.SECONDS)
        .readTimeout(BuildConfig.READ_TIMEOUT, TimeUnit.SECONDS)
        .writeTimeout(BuildConfig.READ_TIMEOUT, TimeUnit.SECONDS)
        .build()

    private fun createBaseUrl() = HttpUrl.get(BuildConfig.API_URL)

И я обрабатываю ответ таким образом:

        val response = call().execute()
        if (response.isSuccessful)
            success(response.body())
        else
            Result.Failure.Response(response.code(), response.message())

Например, я получил ответ, подобный этому:

Headers

Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/plain; charset=utf-8
Expires: -1
Server: Microsoft-IIS/10.0
X-BuildInfo: 1.0.0.3473-20190131-140734
X-Frame-Options: DENY
Date: Thu, 13 Jun 2019 12:40:16 GMT
Content-Length: 0
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN

Необработанный ответ :

код: 400 Сообщение: «Документация и локализация».

Сообщение должно быть напечатано следующим образом: Código de documentsmen não localizado.

Я не знаю, была ли проблема в модернизации или в gson-конвертере, но я не выяснил, что не так или как решить эту проблему.

Может кто-нибудь помочь мне решить эту проблему, пожалуйста?

1 Ответ

0 голосов
/ 14 июня 2019

Не уверен, что ответит на ваш вопрос, но у меня недостаточно репутации, чтобы комментировать.Вопрос - вы уверены, что ваша консоль (или где вы видите вывод?) Поддерживает необходимую локаль?

Предположим, вы можете попробовать добавить UTF-8 в свойства Gradle?Проверьте этот вопрос на примерах: Показать текст UTF-8 правильно в Gradle

...