使用jnlp将URL传递给应用程序时,如果System.getProperty
值包含百分比(%),则% -> % -> %
将无法检索该值。
返回null的示例:
<property name="jnlp.url" value="https://www.site.se/Register%20customer.aspx" />
返回正确网址的示例:
<property name="jnlp.url" value="https://www.site.se/Register20customer.aspx" />
这是基于XML的安全性还是编码错误?
我可以逃避一些吗,还是应该只使用旧的switcheroo(或类似产品)?
最佳答案
我通过对字符串进行Base64编码来解决此问题。
基本上在生成jnlp文件(PHP)时:
<property name="<?=$key?>" value="<?=base64_encode($value)?>" />
然后在应用程序中:
import org.apache.commons.net.util.Base64;
...
jnlpURL = deBase64(System.getProperty("jnlp.url"));
...
private String deBase64(String str)
{
if (Base64.isArrayByteBase64(str.getBytes())) {
return new String(Base64.decodeBase64(str));
} else {
return str;
}
}
这不能解决原始问题,为什么它返回null,但是提供了一种规避该问题的方法。
关于java - JNLP属性中的百分比使System.getProperty返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20091509/