Fuel HTTP - 避免 URL 编码
Fuel HTTP - Avoid URL encoding
使用改造我可以得到并避免 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 响应 - 内部服务器错误(没有更多详细信息)。我认为这是不理解查询。
2019-04-02T03:17:23.314Z - Uncaught internal server error.
服务器是 ParseServer(Back4App) 的一个实例,我无法在那里解码查询。
这里有一个关于使用其余部分的明确说明api。
https://docs.parseplatform.org/rest/guide/#query-constraints
where key 错误的value/formatting。您必须使用双引号和“:”,而不是直接使用带有“=”的查询键。
所以你的编码 URL 应该是这样的:
https://parseapi.back4app.com/classes/tournaments?where=%7B%22name%22%3A%22Brasileir%C3%A3o%2B2019%22%7D
事实上这不是编码问题。
我将我的 kotlin 代码更改为下面的代码片段,将 listOf 中的 Map 替换为纯字符串,它可以正常工作。
val (request, _, result)
= Fuel.get(baseUrl.plus("/classes/Tournaments"), listOf("where" to "{\"name\": \"$name\"}")).responseString()
val (payload, error) = result
使用改造我可以得到并避免 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 响应 - 内部服务器错误(没有更多详细信息)。我认为这是不理解查询。
2019-04-02T03:17:23.314Z - Uncaught internal server error.
服务器是 ParseServer(Back4App) 的一个实例,我无法在那里解码查询。
这里有一个关于使用其余部分的明确说明api。
https://docs.parseplatform.org/rest/guide/#query-constraints
where key 错误的value/formatting。您必须使用双引号和“:”,而不是直接使用带有“=”的查询键。
所以你的编码 URL 应该是这样的: https://parseapi.back4app.com/classes/tournaments?where=%7B%22name%22%3A%22Brasileir%C3%A3o%2B2019%22%7D
事实上这不是编码问题。
我将我的 kotlin 代码更改为下面的代码片段,将 listOf 中的 Map 替换为纯字符串,它可以正常工作。
val (request, _, result)
= Fuel.get(baseUrl.plus("/classes/Tournaments"), listOf("where" to "{\"name\": \"$name\"}")).responseString()
val (payload, error) = result