调用GET接口返回zip包并解压
import org.springframework.beans.factory.annotation.Value;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RequestCallback;
import org.springframework.web.client.RestTemplate;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@RestController
@RequestMapping("/ca")
public class CertificateController {
@Autowired
RestTemplate restTemplate;
@Value("${ca.url.download}")
String caUrlDownload;
@Value("${ca.url.generate}")
String caUrlGenerate;
@Autowired
CaInfoService caInfoService;
public CaInfo downloadCA(Long id) {
RequestCallback requestCallback = request -> request.getHeaders()
.setAccept(Arrays.asList(MediaType.MULTIPART_FORM_DATA, MediaType.ALL));
CaInfo caInfoRes = restTemplate.execute(caUrlDownload.replace("id", id + ""), HttpMethod.GET, requestCallback, clientHttpResponse -> {
InputStream body = clientHttpResponse.getBody();
ZipInputStream zis = new ZipInputStream(body);
ZipEntry zipEntry;
BufferedReader br = new BufferedReader(
new InputStreamReader(zis));
while ((zipEntry = zis.getNextEntry()) != null) {
// 解压压缩文件的其中具体的一个zipEntry对象
String name = zipEntry.getName();
try {
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
sb.append("\r\n");
}
System.out.println(sb)
} catch (Exception e) {
e.printStackTrace();
}
zis.closeEntry();
}
zis.close();
br.close();
return null;
});
}
@PostMapping("/generate")
public CaInfo generateAndDownloadCa(@RequestBody CertSignRequestDto dto,@RequstParam Long id) {
return downloadCA(id);
}
}