【问题标题】:How to do url encoding for query parameters in Kotlin如何在 Kotlin 中对查询参数进行 url 编码
【发布时间】:2019-07-08 20:44:30
【问题描述】:

我是 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"

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

【问题讨论】:

    标签: kotlin urlencode query-parameters


    【解决方案1】:

    const Kotlin 中的表达式必须在编译时知道。另外,正如@Stanislav 指出的那样,print 是一个Unit(即Java 中的void)方法,因此打印某些东西会破坏它的价值。

    由于您的常量是计算出来的,因此使用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"
    

    【讨论】:

    • 私有验证 URL = "www.example.com/$ENCODED_HREF"
    • 是的,字符串插值的非连接版本更胜一筹,我希望对提交的内容进行最小的更改以回答所提出的狭窄问题。
    【解决方案2】:

    好像print 方法的返回类型是Unit,所以ENCODED_HREF 有这种类型。只需将 URLEncoder 部分从方法中取出来修复它:

    private const val ENCODED_HREF = URLEncoder.encode(HREF, "utf-8")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      • 2010-09-11
      • 2021-07-23
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 2011-09-06
      相关资源
      最近更新 更多