gpt4 book ai didi

java - ResponseEntity 在使用 DeferredResult 时得到空体

转载 作者:行者123 更新时间:2023-12-04 02:06:41 27 4
gpt4 key购买 nike

我正在使用 SpringBoot 1.4.4 创建异步 RESTful api。一切正常,除非请求被成功处理,DeferredResult > 总是有空主体和 200 OK 状态代码,即使我明确地将字符串值设置为结果对象。代码如下所示:

RestController 实现:

 @Async
public DeferredResult<ResponseEntity<String>> parseWithLongDelay(
@RequestBody MyRequestObject req){
DeferredResult<ResponseEntity<String>> result = new DeferredResult<>();
:
:
result.setResult(new ResponseEntity<String>("That big zip file successfully parsed.", HttpStatus.OK));
return result;
}

客户端:

 @Test
public void test(){
ListenableFuture<ResponseEntity<String>> futureEntity = new AsyncRestTemplate().postForEntity(url, requestEntity,
String.class);
futureEntity.addCallback(new MyFutureCallback());
:
}
class MyFutureCallback implements ListenableFutureCallback<ResponseEntity<String>> {
@Override
public void onSuccess(ResponseEntity<String> entity) {
String body = entity.getBody();
log.info("response content: " + body);
//always get null body, there is no server side exception or error
//when callback happens
}
}

我期待的是字符串“成功解析了那个大的 zip 文件。”因为 body 得到返回而不是 null?有什么线索吗?请帮忙!

最佳答案

我发现在我的案例中,ShallowEtagHeaderFilter 导致了错误。这是我在休息方法中为避免空体所做的:

ShallowEtagHeaderFilter.disableContentCaching(request);

关于java - ResponseEntity 在使用 DeferredResult 时得到空体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42800241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com