如何在绝对URL与哈希参数之间插入路径且不使用字符串操作
问题原因
java.net.URI是不可变类,所有属性均为只读,你在apply块中尝试修改path的操作不会改变原有实例的属性,因此原有写法无法生效。
正确实现(原生JDK方案,无额外依赖)
直接拆解原有URI的各个组成部分,拼接新路径后重新构造URI实例即可,全程无需手动操作原始URL字符串:
val originalUri = URI("https://test.com/test#someParameter") val targetUri = URI( originalUri.scheme, originalUri.userInfo, originalUri.host, originalUri.port, "${originalUri.path}/site", originalUri.query, originalUri.fragment ) // 输出结果:https://test.com/test/site#someParameter val result = targetUri.toString()
更稳妥的优化方案(OkHttp依赖场景)
如果项目引入了OkHttp,推荐使用HttpUrl类处理路径修改,会自动处理斜杠重复、特殊字符转义等边界问题,容错性更高:
val originalUrl = HttpUrl.get("https://test.com/test#someParameter") val targetUrl = originalUrl.newBuilder() .addPathSegment("site") .build() val result = targetUrl.toString()
内容的提问来源于stack exchange,提问作者Lukas
相关产品推荐
相关产品推荐

