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

使用有效签名URL实例化URL对象时触发MalformedURLException异常

签名URL实例化URL对象触发MalformedURLException异常的解决

尝试通过签名URL访问并下载Google Cloud Storage(GCS)上托管的图片时,遇到如下问题:直接将签名URL字符串变量传入URL构造方法会触发MalformedURLException,但把该变量打印输出的字符串硬编码到代码中却能正常运行,且该URL在浏览器中可正常访问。

无法运行的代码

URL url = new URL(signedUrl);

可正常运行的代码

System.out.println(signedUrl);
URL url = new URL("https://storage.googleapis.com/rydr/insurance_documents/test123.png?X...");

抛出的异常信息

java.lang.RuntimeException: java.net.MalformedURLException: no protocol: "https://storage.googleapis.com/rydr/insurance_documents/test123.png?X..."

此前尝试过Stack Overflow上类似问题的解决方案(调用trim()方法),但未解决问题;使用DownloadManager时也触发了类似异常:

java.lang.IllegalArgumentException: Can only download HTTP/HTTPS URIs: "https://storage.googleapis.com/rydr/insurance_documents/test123.png?X..."

问题原因与解决方案

从异常信息可以直接看出,你的signedUrl字符串被额外的双引号包裹(格式为"https://..."),这就是URL构造方法无法识别HTTPS协议的根本原因——trim()方法只能去除空白字符,无法处理这种首尾的引号。

解决方法是精准移除字符串首尾的双引号,代码示例如下:

// 移除首尾的双引号
String cleanedUrl = signedUrl.replaceAll("^\"|\"$", "");
URL url = new URL(cleanedUrl);

内容的提问来源于stack exchange,提问作者Leif Giering

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:23:29