在Ktor Client中编码URL

问题描述 投票:0回答:1

我需要使用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

kotlin urlencode ktor ktor-client
1个回答
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"

您正在使用什么客户端引擎?

© www.soinside.com 2019 - 2024. All rights reserved.