使用jnlp将URL传递给应用程序时,如果该值包含百分比(%),则System.getProperty
无法检索值。
返回null的示例:
<property name="jnlp.url" value="https://www.site.se/Register%20customer.aspx" />
返回正确url的示例:
<property name="jnlp.url" value="https://www.site.se/Register20customer.aspx" />
这是一个安全的东西,基于xml还是只是错误的编码?
我可以做一些逃避,或者我应该使用旧的switchheroo(% -> % -> %
或类似的)?
答案 0 :(得分:1)
我使用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,但提供了一种绕过它的方法。