当使用 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 的安全问题还是编码错误?
有没有我可以做的转义,或者我应该使用旧的 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/