我需要使用Ktor客户端发出GET请求。我正在使用的URL作为字符串从我无法控制的来源传递给我。 URL字符串包含由Ktor客户端编码为%2C
的逗号,这破坏了后端逻辑。有没有一种方法可以防止Ktor对URL进行编码?
要澄清的示例:
client.get {
url(url)
accept(ContentType.Application.Json)
method = HttpMethod.Get
}
在以下代码中,url
的值为https://my.domain/someData,someMoreData
,但传出请求URL为https://my.domain/someData%2CsomeMoreData
。
答案 0 :(得分:0)
这并不是真正的答案,但是注释不允许发布大量代码。
经过更多调查后,我实际上无法重现您所描述的行为:
fun main() {
runBlocking {
val server = embeddedServer(Netty, port = 8080) {
routing {
trace {
application.log.debug(it.buildText())
}
get("*") {
context.respond(context.request.path())
}
}
}
server.start()
val client = HttpClient()
val url = "http://localhost:8080/someData,someMoreData"
val r : String = client.get {
url(url)
method = HttpMethod.Get
}
println(r) // Getting /someData,someMoreData, meaning not encoded
}
}
这正在使用implementation "io.ktor:ktor-client-okhttp:1.2.6"
您使用的是哪种客户端引擎?