#rest #http #kotlin #parse-platform
#rest #http #kotlin #синтаксический анализ-платформа
Вопрос:
Используя retrofit, я мог бы получить и избежать URL-адреса, закодированного, как показано ниже:
@GET("classes/Tournaments")
fun searchTournament(@Query(value = "where", encoded = false) query: String): Call<List<Tournament>>
В Fuel этот запрос GET:
fun searchTournament(name: String): Any {
val (request, _, result)
= Fuel.get(baseUrl.plus("/classes/tournaments"), listOf("where" to mapOf("name" to name))).responseString()
val (payload, error) = result
println(request.url)
return ""
}
сгенерируйте этот URL: https://parseapi.back4app.com/classes/tournaments?where={name=Brasileirão 2019}
это вызывает ошибку.
Я не смог найти ничего ясного в документах об избежании кодирования. Возможно ли это?
Мое приложение — это консольное приложение Kotlin (без Android)
Когда я отправляю этот запрос на сервер, он отвечает Http 500 — Ошибки внутреннего сервера (без дополнительной информации). Я думаю, что это не понимание запроса.
2019-04-02T03:17:23.314Z - Uncaught internal server error.
Сервер является экземпляром ParseServer (Back4App) Я не смог расшифровать запрос там.
Комментарии:
1.
that causes an error
почему? это довольно справедливо. Просто убедитесь, что вы декодируете его обратно после получения2. как? сервер не мой. Я получил ошибку http 500.
Ответ №1:
Вот четкая инструкция по использованию rest api.
https://docs.parseplatform.org/rest/guide/#query-constraints
Значение / форматирование where key неверно. Вы должны использовать двойные кавычки и ‘:’ вместо прямого использования ключа запроса с ‘=’.
Итак, ваш закодированный URL-адрес должен быть примерно таким:https://parseapi.back4app.com/classes/tournaments ?где={«name»:»Brasileirão+2019″}
Ответ №2:
На самом деле это не было проблемой кодирования.
Я меняю свой код kotlin на фрагмент ниже, заменяя карту внутри listOf простой строкой, и это работает.
val (request, _, result)
= Fuel.get(baseUrl.plus("/classes/Tournaments"), listOf("where" to "{"name": "$name"}")).responseString()
val (payload, error) = result