Java Rest Web服务:' +' String param中的字符被视为空格字符

时间:2014-06-27 11:30:25

标签: java string escaping

我的客户端应用程序向服务器端发送一个字符串以对其进行解码。有问题的字符串可能包含“+”字符。 我的问题是当我想要处理字符串时,它会消除'+'字符消失(可能被视为连接运算符。我怎么能解决这个问题?字符串不是正确的类型吗?我应该使用字节[]代替?

客户端:

 $.ajax({
    type: "GET",
    url: "my/url/DecryptString",
    data: "encryptedString="+$("#myStringInput").val(),
    ...

服务器端代码:

 ...
 public String decryptString(@QueryParam("encryptedString") String encryptedString) {
        logger.info("=====> decryptString()");

        String decryptedString = null;
        Properties properties = new Properties();

            logger.debug("encryptedString: " + encryptedString);

        // get crypto properties
        try {
          properties.load(toto.class.getResourceAsStream("/config.properties"));
        } catch (IOException e1) {
            logger.error(e1.getStackTrace());
        }
        if(properties.isEmpty()) {
            logger.error("Properties file is EMPTY!");
        }
        String encodeKey = properties.getProperty("toto.crypt.encodeKey");

        decryptedString = Crypto.Decrypt(encodeKey, encryptedString.toString());

        return decryptedString;
    }

在客户端作为加密字符串传递的字符串是:'7NFASg ++ qLOSfDXBR8wzcw =='

以下是服务器端的跟踪:

  

DEBUG encryptedString:7NFASg qLOSfDXBR8wzcw ==

1 个答案:

答案 0 :(得分:5)

查询参数中的

+被视为空格的编码,这就是为什么7NFASg++qLOSfDXBR8wzcw==被解码为7NFASg qLOSfDXBR8wzcw==的原因。如果您想通过查询参数传输+,请将其编码为%2B(另请参阅Request Parameter Losing Plus Sign)。