使用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/

10-13 05:29