Я создаю приложение для 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-конвертере, но я не выяснил, что не так или как решить эту проблему.
Может кто-нибудь помочь мне решить эту проблему, пожалуйста?