java - JNLP 属性中的百分比使 System.getProperty 返回 null

标签 java xml special-characters java-web-start jnlp

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

相关文章:

java - 如何使用 Java 11 运行 Wildfly 14?

php - XML查看器和荧光笔

c# - 有没有办法让 DataContractSerializer 输出更清晰的 XML?

javascript - JS 在 Excel 中 # 后构建 CSV 中断

javascript - 为什么ajax请求时字符 "+"没有发送到php文件?

java - 将 JTextarea 与 JTabbedPanel 结合使用

java - 检索 FAB 的 X 和 Y

java - Spring + Hibernate 无法确定类型 Set

c# - 以字符串结尾的属性值的 XPath?

syntax - #在LISP中是什么意思