将byte []发送到Java REST POST会更改实际数组

时间:2015-02-19 21:15:44

标签: java spring rest bytearray

我有一个Spring REST服务设置,它有一个POST方法来接收一个字节数组。此方法的目标是接受压缩的JSON字符串,因此接受字节数组。解压缩的字符串将映射到列表,然后发送到数据库。

@RequestMapping(value = "/receiveData.do", method = RequestMethod.POST)
public
@ResponseBody boolean receiveData(@RequestParam byte[] data, 
                                  @RequestParam String configurationName) {
    String jsonString = ZipController.unZip(data);
    JSONMapper jsonMapper = new JSONMapper();
    List<Message> messages = null;
    try {
        messages = jsonMapper.parseToMessage(jsonString, configurationName);
        saveData(messages);
    } catch (Exception e) {
        return false;
    }
    return true;
}

字符串的压缩和解压缩工作没有瑕疵,正如我所写的测试所示。转换为列表然后将其存储在数据库中也可以完美地工作。但是,当我压缩一个字符串并将其发送到该地址时,不知何故它不再被识别为zip。进一步挖掘显示实际的byte []在此过程中已完全改变。在发送之前,阵列打印到

[B@7186333e

然而,在发送之后,它突然打印到(例如)

[B@fee07cc

这似乎是随机的,但[B @总是相同的。其余的是随机的。我正在使用REST保证的框架进行测试,但是SOAPui也提出了同样的问题。我用来发送呼叫的代码是:

expect().
body(containsString("true")).
when().
given().
parameters("data",ZipController.zip(correctJSONMessage)).
post("/receiveData.do");

该方法返回true或false作为反馈,无论它是否成功。

整个服务在Tomcat 6服务器上运行,是否可能与阵列混淆?我该如何解决这个问题?

0 个答案:

没有答案