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
        }

    }