Тело запроса Post не кодируется в OkHttpAndroid

Форум для тех, кто программирует под Android
Anonymous
Тело запроса Post не кодируется в OkHttp

Сообщение Anonymous »

Я создал функцию для выполнения входа в систему с использованием запроса OkHttp Post. Но когда я пытаюсь закодировать свои учетные данные и передать их в теле, я получаю ответ 401 (неправильные учетные данные). Я знаю, что они правы, и с сервером тоже все в порядке (проверено с помощью Postman), поэтому я ожидаю, что проблема в OkHttp или в моих настройках его функциональности.
Вот моя функция :

Код: Выделить всё

suspend fun login(email: String, password: String): String {
val res = withContext(Dispatchers.IO) {
val client = OkHttpClient.Builder()
.addNetworkInterceptor(LoggingInterceptor())
.build()

val headers = Headers.Builder()
.add("Content-Type", "application/json")
.build()

val body = "{\"username\":\"correct_username\",\"password\":\"correct_password\"}"
.toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())

val request = Request.Builder()
.url("correct_url") // Replace with your API endpoint
.headers(headers)
.post(
body
)
.build()

val response = client.newCall(request).execute()

if (response.body != null) {
val authResponse =
Gson().fromJson(response.body!!.string(), AuthResponse::class.java)

"login"
} else {
"no login";
}

}

return res
}
(Все, что я здесь сделал, соответствует документации OkHttp, но когда я делаю запрос с правильным именем пользователя и паролем к моему маршруту API, я ожидаю получить токены доступа и обновления. (обычная вещь), вместо этого я получаю ошибку 401 (неправильные учетные данные, что-то в этом роде).
Теперь я знаю, что учетные данные, которые я кодирую, верны, что заставляет меня полагать, что может быть проблема с OkHttp сам по себе или с моей настройкой его функций.
Еще одна полезная информация о моей проблеме заключается в том, что я добавил перехватчик в свой клиент OkHttp для регистрации запросов и ответов, и в нем говорится: мне кажется, что тело запроса:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-okhttp

Вернуться в «Android»