Топливный HTTP - избегайте кодирования URL - PullRequest
0 голосов
/ 02 апреля 2019

Используя модификацию, я мог бы получить и избежать 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=%7Bname%3DBrasileir%C3%A3o+2019%7D, который вызываетошибка.

Я не смог найти ничего ясного в документах о закодированных избеганиях.Возможно ли это?

Мое приложение - консольное приложение Kotlin (без Android)

Когда я отправляю этот запрос на сервер, он отвечает сообщением Http 500 - Internal Server Errors (без дополнительных подробностей).Я думаю, что это не понимание запроса.

2019-04-02T03:17:23.314Z - Uncaught internal server error.

Сервер является экземпляром ParseServer (Back4App), я не смог там декодировать запрос.

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Вот четкая инструкция по использованию остальных API.

https://docs.parseplatform.org/rest/guide/#query-constraints

Значение / форматирование неверного ключа.Вы должны использовать двойные кавычки и ':' вместо непосредственного использования ключа запроса с '='.

Таким образом, ваш закодированный URL должен быть примерно таким: https://parseapi.back4app.com/classes/tournaments?where=%7B%22name%22%3A%22Brasileir%C3%A3o%2B2019%22%7D

0 голосов
/ 02 апреля 2019

На самом деле это не было проблемой кодирования.

Я изменяю свой код kotlin на приведенный ниже фрагмент, заменяя карту внутри listOf простой строкой, и она работает.

val (request, _, result)
                = Fuel.get(baseUrl.plus("/classes/Tournaments"), listOf("where" to "{\"name\": \"$name\"}")).responseString()
        val (payload, error) = result
...