Ниже приведен пример кода, который я использую для ответа на этот API.
@RequestMapping(value = "/transactionStatusAsync")
public DeferredResult<ResponseEntity<?>> asyncTransactionStatus(HttpServletRequest request, Model model,
Locale locale, HttpServletResponse response) {
LOGGER.info("Request received async-deferredResult TransactionStatus request");
//return generateDeferredAndProcessRequest(request, response);
DeferredResult<ResponseEntity<?>> output = new DeferredResult<>();
output.setResult(createResponseEntity(ERROR_PAGE,
HttpStatus.REQUEST_TIMEOUT));
return output ;
}
private static ResponseEntity<?> createResponseEntity(String path, HttpStatus status) {
URI location = URI.create(path); **// "/WEB-INF/views/jsp/error.jsp"**
boolean absolute = location.isAbsolute(); **//false**
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setLocation(location);
ResponseEntity<?> objectResponseEntity = new ResponseEntity<>(responseHeaders, status);
return objectResponseEntity ;
}
ПРИМЕЧАНИЕ. URI - это относительный, а не абсолютный URI.
Ошибка при поступлении: HTTP ERROR 408 (эта страница не работает)
Хотя мойответ с DeferredResult работает нормально, когда я пишу байты в теле ответа, как показано ниже: output.setResult (ResponseEntity.status (HttpStatus.OK) .body (responseData.getBytes ()));
Что я должен сделать, чтобы ответить на определенный URI в отложенном ответе?