You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Akka-http传入URL变量调用Get方法报错非法URI如何解决

根本原因
  • 你的url字符串携带了不可见的特殊控制字符,从报错信息可以看到URL末尾带有\n换行符,部分场景下也可能是URL开头混入了零宽空格、UTF-8 BOM头这类肉眼不可见的字符,这些字符不会在常规打印中展示,但会导致Akka HTTP的URI解析器识别失败,触发格式校验报错。
  • 其次是Get方法的重载逻辑差异:直接传入字符串字面量时会调用Get(String)重载,内部会做基础的字符串预处理;如果你的url变量经过隐式转换提前转为Uri类型,转换逻辑没有处理特殊字符就会直接抛出异常。
解决方案
  1. 先对URL字符串做特殊字符清理,用trim移除首尾空白、换行符,再配合正则过滤所有控制字符:
val cleanUrl = url.trim.replaceAll("[\\p{Cntrl}]", "")
val getData = Get(cleanUrl)
  1. 建议显式完成URI解析,提前捕获异常方便后续排查:
import akka.http.scaladsl.model.Uri
import akka.http.scaladsl.client.RequestBuilding.Get

val url = "https://abcde-abcde.abcde.abcde.abcde.abcde.com/abcde"
val uri = Uri(url.trim.replaceAll("[\\p{Cntrl}]", ""))
val getData = Get(uri)
  1. 如果URL是从配置文件、外部接口等渠道读取的,建议增加格式校验逻辑,避免读取到带特殊字符的异常地址。

内容的提问来源于stack exchange,提问作者seriously divergent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:39:00