ktor-client如何发送带参数的Http Form
How to send Http Form with parameters by ktor-client
我发现几乎所有的 ktor-client 文档和示例都使用空的 formData 来展示客户端的工作方式
formParameters: Parameters = Parameters.Empty
那么kotlin/ktor填充参数的方法是什么?
Ktor使用这种方式来填充参数:
client.submitForm<HttpResponse>(
url = "https://foo.com/login",
formParameters = Parameters.build {
append("_username", username)
append("_password", password)
})
或者,您也可以使用 formData
简单地传递表单数据,例如:
client.post<HttpResponse>("https://example.com/login") {
formData {
parameter("username", username)
parameter("password", password)
}
}
我至少找到了三种 post www-urlencoded 形式的方法:
return httpClient.submitForm("url") {
parameter("key", "value")
}
return httpClient.post("url") {
FormDataContent(Parameters.build {
parameter("key", "value")
})
}
return httpClient.post("url") {
formData {
parameter("key", "value")
}
}
append() 方法被标记为内部方法并且不适用于 ktor 1.6.4
client.get{
url("https://api.yelp.com/v3/businesses/search")
contentType(ContentType.Application.Json)
headers {
append(HttpHeaders.Authorization, "Bearer $API_KEY")
}
formData {
parameter("location","NYC") //use this wey
}
}
我发现几乎所有的 ktor-client 文档和示例都使用空的 formData 来展示客户端的工作方式
formParameters: Parameters = Parameters.Empty
那么kotlin/ktor填充参数的方法是什么?
Ktor使用这种方式来填充参数:
client.submitForm<HttpResponse>(
url = "https://foo.com/login",
formParameters = Parameters.build {
append("_username", username)
append("_password", password)
})
或者,您也可以使用 formData
简单地传递表单数据,例如:
client.post<HttpResponse>("https://example.com/login") {
formData {
parameter("username", username)
parameter("password", password)
}
}
我至少找到了三种 post www-urlencoded 形式的方法:
return httpClient.submitForm("url") {
parameter("key", "value")
}
return httpClient.post("url") {
FormDataContent(Parameters.build {
parameter("key", "value")
})
}
return httpClient.post("url") {
formData {
parameter("key", "value")
}
}
append() 方法被标记为内部方法并且不适用于 ktor 1.6.4
client.get{
url("https://api.yelp.com/v3/businesses/search")
contentType(ContentType.Application.Json)
headers {
append(HttpHeaders.Authorization, "Bearer $API_KEY")
}
formData {
parameter("location","NYC") //use this wey
}
}