ResponseEntity <byte []>通过Rest Web服务

时间:2015-12-14 09:29:20

标签: java arrays string rest web-services

我正在使用Spring and Rest网络服务,我遇到byte arrayString的问题。我必须在我的ResponseEntity中发送一个String,在客户端我必须检索原始的String。我无法使用ResponseEntity<String>,因为我需要发送文件。 这是发送String或文件:

的Web服务的一部分
@Override
@RequestMapping(value = "/file", method = RequestMethod.GET) 
    public  ResponseEntity<byte[]> getAcquisition(HttpServletResponse resp,@RequestParam(value="filePath", required = true) String filePath){
        final HttpHeaders headers = new HttpHeaders();
        OutputStream outputStream = null;
        File toServeUp= null;
        try{
            toServeUp=new File(filePath);
            if (!toServeUp.exists()){
                headers.setContentType(MediaType.TEXT_PLAIN);
                LOG.error("Threw exception in MatlabClientControllerImpl::getAcquisition : File doesn't exists!!");
                String message = "ERROR: Could not retrieve file on server, check the path!";       
                return new ResponseEntity<byte[]>(message.getBytes(("UTF-8")), headers, HttpStatus.OK);
.....

在客户端我使用这种方法:

@Override
    public Response getFile(String serverIp, String toStorePath, String filePath){
        ResponseEntity<byte[]> responseEntity = null;
        try{
            RestTemplate restTemplate = new RestTemplate();
            responseEntity  = restTemplate.getForEntity(serverIp + "ATS/client/file/?filePath={filePath}", byte[].class, filePath); 

            if (MediaType.TEXT_PLAIN.toString().equals(responseEntity.getHeaders().getContentType().toString()))
                return new Response(false, false, new String(responseEntity.getBody(),"UTF-8"), null);
....

这是回复的一个例子:

{
  "status": false,
  "success": false,
  "result": "IlJWSlNUMUk2SUVWeWNtOXlJR2x1SUhSb1pTQndZWFJvTENCamFHVmpheUJwZENFPSI=",
  "error": null
}

但我检索了几个字符,但不是我通过服务器发送的字符。 我尝试了很多替代方案但没有效果。 你有什么主意吗?感谢

0 个答案:

没有答案