如何在 Kotlin 中对查询参数进行 url 编码

Mia*_*Mia 5 urlencode query-parameters kotlin

我是 Kotlin 的新手,我正在尝试对具有查询参数的 url 进行 url 编码。

private const val HREF = "date?July 8, 2019"
private const val ENCODED_HREF = print(URLEncoder.encode(HREF, "utf-8"))
private const val URL = "www.example.com/"+"$ENCODED_HREF"
Run Code Online (Sandbox Code Playgroud)

错误:常量“val”的类型为“Unit”。只允许使用原语和字符串private const val ENCODED_HREF

Dav*_*ell 10

constKotlin 中的表达式必须在编译时已知。此外,正如@Stanislav 指出的那样, print 是一个Unit(即,void在 Java 中)方法,因此打印某些内容会破坏其价值。

由于您的常量是计算出来的,因此使用val(这是一个运行时常量) 是合适的。以下编译。

private const val HREF = "date?July 8, 2019"
private val ENCODED_HREF = java.net.URLEncoder.encode(HREF, "utf-8")
private val URL = "www.example.com/"+"$ENCODED_HREF"
Run Code Online (Sandbox Code Playgroud)


Sta*_*lov 5

似乎该print方法的返回类型是Unit,所以这就是为什么ENCODED_HREF有这种类型。只需从方法中取出 URLEncoder 部分即可修复它:

private const val ENCODED_HREF = URLEncoder.encode(HREF, "utf-8")
Run Code Online (Sandbox Code Playgroud)