请帮我对网址进行编码:
http://dsxsd.com/def/fss/default/files/10 رسم الصباح - 1.mp3
我需要在 Android 应用程序中下载此文件。 当我尝试建立 url 连接时,它给了我 404。但在浏览器上,url 正在工作。 当我粘贴浏览器编码的网址时,它工作正常。
但是我不能硬核这些东西,因为我有这样的网址来自服务器。
我尝试使用 Urlencoder.encode(url,"UTF-8"); 进行编码 但服务器调用给了我错误的网址,我收到“java.net.MalformedURLException:未找到协议(protocol):http%3A%2F%........
此网址不单独编码路径参数和查询参数。
请帮助我。
最佳答案
使用URI templates : URLEncoder.encode()
不起作用。
上述库的用法:
final URITemplate template = new URITemplate("http://dsxsd.com/def/" +
"fss/default/files/{filename}");
final VariableMap vars = VariableMap.newBuilder()
.addScalarValue("filename", "10 رسم الصباح - 1.mp3")
.freeze();
System.out.println(template.toString(vars));
输出:
http://dsxsd.com/def/fss/default/files/10%20%D8%B1%D8%B3%D9%85%20%D8%A7%D9%84%D8%B5%D8%A8%D8%A7%D8%AD%20-%201.mp3
关于java - url 连接的 url 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22113385/