使用改造,我可以获取并避免如下所示的URL编码:
async getData(key) {
let { getData } = this.props;
let res = null;
if (getData.code === "ON") {
try{
res = await Codeapi(getData._id[0]);
} catch(e) {
console.log(e);
}
}
return (
<Dialog
key={key}
side="left"
onImageClick={this.handleClick}>
<ReactSlick res/>
</Dialog>
);
}
在加油此GET请求中:
@GET("classes/Tournaments")
fun searchTournament(@Query(value = "where", encoded = false) query: String): Call<List<Tournament>>
生成此URL: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 ""
}
,从而导致错误。
我在文档中找不到关于避免编码的明确信息。这可能吗?
我的应用是Kotlin控制台应用(没有Android)
当我将此查询发送到服务器时,它会返回Http 500-内部服务器错误(没有更多详细信息)。我认为它不了解查询。
https://parseapi.back4app.com/classes/tournaments?where=%7Bname%3DBrasileir%C3%A3o+2019%7D
服务器是ParseServer(Back4App)的实例,我无法在那里解码查询。
答案 0 :(得分:1)
这是有关使用rest 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
答案 1 :(得分:0)
实际上,这不是编码问题。
我将我的kotlin代码更改为以下代码段,将listOf内的Map替换为纯字符串,并且可以正常工作。
val (request, _, result)
= Fuel.get(baseUrl.plus("/classes/Tournaments"), listOf("where" to "{\"name\": \"$name\"}")).responseString()
val (payload, error) = result