【发布时间】:2021-02-02 10:21:09
【问题描述】:
我正在使用 Ktor 客户端调用 API,但没有找到任何关于如何使用查询参数构造 URL 的示例。
我想要这样的东西:
protocol = HTTPS,
host = api.server.com,
path = get/items,
queryParams = List(
Pair("since", "2020-07-17"),
)
我找不到任何关于如何为此使用 URL 构建器的示例。
【问题讨论】:
我正在使用 Ktor 客户端调用 API,但没有找到任何关于如何使用查询参数构造 URL 的示例。
我想要这样的东西:
protocol = HTTPS,
host = api.server.com,
path = get/items,
queryParams = List(
Pair("since", "2020-07-17"),
)
我找不到任何关于如何为此使用 URL 构建器的示例。
【问题讨论】:
如果您想分别指定每个元素(协议、主机、路径和参数),您可以使用HttpClient.request 方法来构造您的url。在此方法中,您可以访问HttpRequestBuilder,然后您可以使用UrlBuilder 配置url
client.request<Response> {
url {
protocol = URLProtocol.HTTPS
host = "api.server.com"
path("get", "items")
parameters.append("since", "2020-07-17")
}
}
Response 类型是您的回复,您可以在此处指定任何您需要的内容
【讨论】:
如果有人想为他们的所有请求添加一个基本 URL,这也会很有帮助:
HttpClient(Android) {
expectSuccess = false
//config Client Serialization
install(JsonFeature) {
serializer = KotlinxSerializer(json)
}
//config client logging
install(Logging) {
level = LogLevel.BODY
}
//Config timeout
install(HttpTimeout) {
requestTimeoutMillis = 30 * 1000L
connectTimeoutMillis = 10 * 1000L
}
//Config Base Url
defaultRequest {
url {
protocol =URLProtocol.HTTPS
host = baseUrl
}
}
}
val json = kotlinx.serialization.json.Json {
ignoreUnknownKeys = true
isLenient = true
encodeDefaults = false
}
【讨论】: