在 Android Kotlin 上从 API URL 解析单个查询参数数据的最简单方法

Easiest way to parse individual query parameter data from an API URL on Android Kotlin

在我的 Android 应用程序中,我需要从某些 API 端点获取确切的值,格式如下:

https://demo.com/api/v1/?msg=Thank+you!+Your+files+were+submitted+successfully!&status=Successful

获取 "Thank you! Your files were submitted successfully!" 以使用 Kotlin 显示的最佳方式是什么?

要添加的特别说明:

  1. 有一种获取查询的方法是 android.net.URI.getQueryParameter()。但它有一个错误,无法将值中的 + 或特殊字符解析为 space 字符。

  2. Android 6.0 版本删除了对 Apache HTTP 客户端的支持,这就是为什么 URLEncodedUtils.parse() 也不能工作的原因。

使用 android.net.UrlQuerySanitizer 解析上述形式的 API 端点的各个值,如下所示:

import android.net.UrlQuerySanitizer

//..

val sanitizer = UrlQuerySanitizer()
sanitizer.setAllowUnregisteredParamaters(true)
sanitizer.parseUrl(url)  
var msg : String? = sanitizer.getValue("msg")

//For removing the "+" signs or any other unwanted signs to get a displayable message like the question:

msg?.let {
    if (it.contains("+")) {
        msg = it.replace("+", " ")
    }
}