我正在使用Spring and Rest网络服务,我遇到byte array
和String
的问题。我必须在我的ResponseEntity中发送一个String,在客户端我必须检索原始的String。我无法使用ResponseEntity<String>
,因为我需要发送文件。
这是发送String
或文件:
@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
}
但我检索了几个字符,但不是我通过服务器发送的字符。 我尝试了很多替代方案但没有效果。 你有什么主意吗?感谢