首页 > 解决方案 > RestTemplate.postForObject() 有效,但 exchange() 无效

问题描述

我有一个应用程序将 api 调用发送到另一个应用程序,使用以下代码:

objreq.setReq(request);
HttpEntity<Request> entity = new HttpEntity<Request>(objreq, headers);

ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);

其中 headers 当然包含 application/json。

问题是,objreq 设置正确,但是,当它调用另一个 api 时:

@PostMapping
  public ResponseEntity<Response> insertRequest(
          @RequestBody @Valid Request request) {
    requestService.insertRequest(request);
    return ResponseEntity.ok(new ResponseSuccess<>());
  }

所有字段均为空。这真的很烦人,因为请求中的字段设置正确,但响应中的所有内容都是空的。

注意:此代码工作正常

restTemplate.postForObject(url, request, String.class);

想知道为什么交换不起作用,不幸的是我对 RestTemplate 没有太多经验,所以不确定问题是否在这里。非常感谢

标签: javahttpspring-mvcweb

解决方案


根据这个文档ok(T body)从参数构建响应体T body,你传递了一个ResponseSuccess对象,这可能是这里的问题,我不知道类里面有什么ResponseSuccess(找不到这个类的文档,所以我可以'不确定问题可能出在这门课的哪个位置)但我会在那里寻找问题。


推荐阅读