在 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
显示的最佳方式是什么?
要添加的特别说明:
有一种获取查询的方法是 android.net.URI.getQueryParameter()
。但它有一个错误,无法将值中的 +
或特殊字符解析为 space 字符。
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("+", " ")
}
}
在我的 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
显示的最佳方式是什么?
要添加的特别说明:
有一种获取查询的方法是
android.net.URI.getQueryParameter()
。但它有一个错误,无法将值中的+
或特殊字符解析为 space 字符。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("+", " ")
}
}