You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring Boot REST服务中保存并展示JSON/Octet-Stream响应?

在Spring Boot REST服务中处理JSON/Octet-Stream响应:保存与展示

先给你提个小建议:你的代码里同时用了手动构建Basic认证头和BasicAuthorizationInterceptor,这其实有点冗余——BasicAuthorizationInterceptor已经帮你处理了认证逻辑,不需要再手动设置authHeader啦,删掉那部分代码会更简洁。

接下来分两种响应类型给你具体解决方案:

1. 处理JSON响应

如果服务器返回的是JSON,你可以选择直接用字符串接收,或者映射到实体类(更推荐,方便后续操作)。

展示JSON内容

  • 如果你只是想打印展示,直接获取响应体即可:
RestTemplate restTemplate = new RestTemplate();
// 添加认证拦截器,不用手动构建header
restTemplate.getInterceptors().add(new BasicAuthorizationInterceptor("username", "password"));

String fooResourceUrl = "server URI";
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity<String> entity = new HttpEntity<>(headers); // 这里你原来的"parameters"如果不需要可以去掉,或者换成实际请求体

// 用String接收JSON
ResponseEntity<String> result = restTemplate.exchange(fooResourceUrl, HttpMethod.GET, entity, String.class);
// 打印展示JSON
System.out.println("JSON响应内容:" + result.getBody());

// 更推荐:映射到实体类
// 假设你有一个Foo类,和JSON结构对应
// ResponseEntity<Foo> result = restTemplate.exchange(fooResourceUrl, HttpMethod.GET, entity, Foo.class);
// System.out.println("映射后的实体:" + result.getBody());

保存JSON到文件

把JSON字符串写入本地文件,可以用Java NIO的Files类:

String jsonContent = result.getBody();
Path filePath = Paths.get("保存的文件路径/response.json");
try {
    Files.write(filePath, jsonContent.getBytes(StandardCharsets.UTF_8));
    System.out.println("JSON已成功保存到:" + filePath.toAbsolutePath());
} catch (IOException e) {
    e.printStackTrace();
}

2. 处理Octet-Stream(二进制)响应

如果服务器返回的是二进制数据(比如图片、PDF、压缩包等),不能用String接收,要换成byte[]或者Resource类型。

保存二进制文件到本地

RestTemplate restTemplate = new RestTemplate();
restTemplate.getInterceptors().add(new BasicAuthorizationInterceptor("username", "password"));

String fooResourceUrl = "server URI";
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM));
HttpEntity<String> entity = new HttpEntity<>(headers);

// 用byte[]接收二进制响应
ResponseEntity<byte[]> result = restTemplate.exchange(fooResourceUrl, HttpMethod.GET, entity, byte[].class);

// 保存到文件
Path filePath = Paths.get("保存的文件路径/response.bin"); // 根据实际文件类型改后缀,比如.png/.pdf
try {
    Files.write(filePath, result.getBody());
    System.out.println("二进制文件已成功保存到:" + filePath.toAbsolutePath());
} catch (IOException e) {
    e.printStackTrace();
}

展示二进制内容(以图片为例)

如果是图片这类可视化的二进制数据,你可以把它转成Base64字符串,方便在前端页面展示(如果是Web场景):

byte[] imageBytes = result.getBody();
String base64Image = Base64.getEncoder().encodeToString(imageBytes);
// 前端可以用<img src="data:image/png;base64,${base64Image}" />来展示
System.out.println("图片Base64编码:" + base64Image);

如果是其他二进制类型(比如PDF),直接展示不太现实,一般都是保存后打开对应的文件查看。

内容的提问来源于stack exchange,提问作者Pralay Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:06:27