2013-11-20 1 views
2

При передаче URL-адреса приложения с помощью jnlp System.getProperty не может получить значение, если это значение содержит процент (%).Процент в свойстве JNLP делает System.getProperty return 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 на основе или просто плохое кодирование?

Есть ли какие-то побеги, которые я могу сделать, или я должен просто пойти со старым переключателем (% -> &#37; -> % или аналогичным)?

ответ

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; 
    } 
} 

Это не решает оригинальный вопрос, почему он возвращает нуль, но предоставляет возможность чтобы обойти это.

Смежные вопросы