当前位置: 首页 > 知识库问答 >
问题:

使用DeferredResult时,ResponseEntity得正文为空

蒋飞捷
2023-03-14

我正在使用springboot 1.4.4创建一个异步RESTful API。除了成功处理请求时,DeferredResult >的正文和200 OK状态代码始终为空之外,其他操作都很正常,即使我显式地将字符串值设置到result对象。代码如下所示:

RestController IMPL:

 @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
 }
}  

我期待字符串“That big zip file successfully parsed.”body get return而不是Null?有线索吗?请救命!

共有1个答案

龚同
2023-03-14

我发现在我的例子中,ShalloweTagHeaderFilter导致了错误。这是我在休息法中为了避免身体空虚所做的:

ShallowEtagHeaderFilter.disableContentCaching(request);
 类似资料:
  • 问题内容: 我们正在使用Spring(4.1.1。)实现REST API。对于某些HTTP请求,我们希望返回一个没有主体的头作为响应。但是,使用似乎无效。通过MockMvc测试调用时,返回406(不可接受)。使用不带参数的值()工作正常。 方法: 测试用例(TestNG): 此堆栈跟踪失败: 问题答案: 注意:对于问题4.1.1.RELEASE中提到的版本,这是正确的。 通过来处理返回值。 当Re

  • 问题内容: 请帮助我得到一个where 本身就是一个泛型类型。如我现在所见,Spring RestTemplate现在不支持此功能。我正在使用Spring MVC版本3.1.2 这是我要使用的代码:代码: 我收到此错误: 这是明显的错误,但是今天如何解决呢? 比我想得到我的通用响应类型: 现在,我使用此解决方案,并且不使用: 问题答案: 通过引入修复了该问题,你可以显式继承该参数化类型,以便在运行

  • 我正在创建一个RESTFul Web服务,其可用服务如下: 当空列表返回时,我将在浏览器中得到以下响应:

  • 问题内容: 我正在使用Spring Framework 4.0.7,MVC和Rest 我可以在以下方面安心工作: 例如: 用的方法(只是创建) 退还一些东西 工作良好 我可以用 : (我知道它与+ 相同) 例如: 用的方法(只是创建) 退还一些东西 我的问题是: 如果 出于确凿的原因 或 特定情况, 必须强制使用另一种选择 如果(1)无关紧要,则建议采用什么方法以及为什么。 问题答案: 旨在表示整

  • 我也得到了200的回复,但没有身体的数据

  • null 例如: 方法(只创建) 归还某物 null null