Ktor 中 URL builder 的例子
Example of URL builder in Ktor
我正在使用 Ktor 客户端调用 API,但我没有找到任何关于如何使用查询参数构造 URL 的示例。
我想要这样的东西:
protocol = HTTPS,
host = api.server.com,
path = get/items,
queryParams = List(
Pair("since", "2020-07-17"),
)
我找不到任何关于如何为此使用 URL 生成器的示例。
如果您想单独指定每个元素(协议、主机、路径和参数),您可以使用 HttpClient.request
方法来构建您的 url
。在此方法中,您可以访问 HttpRequestBuilder and then you can configure url
with usage of UrlBuilder
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
}
我正在使用 Ktor 客户端调用 API,但我没有找到任何关于如何使用查询参数构造 URL 的示例。
我想要这样的东西:
protocol = HTTPS,
host = api.server.com,
path = get/items,
queryParams = List(
Pair("since", "2020-07-17"),
)
我找不到任何关于如何为此使用 URL 生成器的示例。
如果您想单独指定每个元素(协议、主机、路径和参数),您可以使用 HttpClient.request
方法来构建您的 url
。在此方法中,您可以访问 HttpRequestBuilder and then you can configure url
with usage of UrlBuilder
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
}