Hutool二维码 Springboot <Response body is empty>
时间: 2024-09-26 17:03:18 浏览: 32
Hutool是一个开源Java工具包,其中包含了一个方便易用的二维码生成模块。要在Spring Boot应用中使用Hutool生成二维码,并解决`Response body is empty`的问题,你需要做以下几步:
1. **添加依赖**:
将Hutool二维码相关的依赖添加到项目的pom.xml或build.gradle文件中:
Maven:
```xml
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>最新版本号</version>
</dependency>
```
Gradle:
```groovy
implementation 'cn.hutool:hutool-all:最新版本号'
```
2. **生成二维码**:
使用Hutool提供的QRCode工具类来生成二维码图片:
```java
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.RandomUtil;
import cn.hutool.log.Logs;
@Autowired
private QrCode qrCode;
public String generateQRCode(String content) {
try {
byte[] qrData = qrCode.encode(content, QrCode.ECCLevel.L);
String imgBase64 = RandomUtil.randomAlphaNum(32) + ".png"; // 临时保存的图片名
IoUtil.saveFile(qrData, "classpath:" + imgBase64);
return imgBase64; // 返回Base64编码的图片路径
} catch (Exception e) {
Logs.error(e);
throw new RuntimeException("Failed to generate QR code", e);
}
}
```
3. **返回响应体**:
在Controller中,调用`generateQRCode`方法并将结果转换为响应体发送回去,记得指定正确的Content-Type:
```java
@GetMapping("/generate-hutool-qr")
public ResponseEntity<String> generateHutoolQR(@RequestParam(value = "content") String content) {
try {
String qrBase64 = generateQRCode(content);
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=二维码.png")
.contentType(MediaType.IMAGE_PNG)
.body(qrBase64);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("生成二维码失败");
}
}
```
如果遇到`Response body is empty`错误,可能是返回的图片流没有被正确地处理。检查一下是否成功生成了二维码以及响应头设置是否正确。
阅读全文