我有一个Java 7 Spring Boot(1.5.4)RESTfull服务,其端点返回DeferredResult:
@RequestMapping(value = "/download/{templateName:.+}")
public DeferredResult<ResponseEntity> download(@PathVariable final String templateName,
@RequestParam final Map<String, Object> args) {
final DeferredResult<ResponseEntity> result = new DeferredResult<>();
try {
// it returns a RxJava Observable
final ReportService reportService = getReportService(templateName);
reportService.process(templateName, args).subscribe(new Consumer<byte[]>() {
public void accept(byte[] bytes) throws Exception {
HttpHeaders header = new HttpHeaders();
header.setContentType(new MediaType("application", MEDIA_TYPE_SPREADSHEET));
header.setContentDispositionFormData("attachment", templateName);
InputStreamResource resource = new InputStreamResource(new ByteArrayInputStream(bytes));
result.setResult(ResponseEntity.ok().headers(header).body(resource));
}
}, new Consumer<Throwable>() {
public void accept(Throwable e) throws Exception {
result.setResult(ResponseEntity.badRequest().build());
// …Run Code Online (Sandbox Code Playgroud)