RestTemplate.postForObject()有效,但是exchange()无效

时间:2018-08-09 11:22:13

标签: java http spring-mvc web

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

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

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

标头当然包含application / json。

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

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

所有字段均为空。这真令人讨厌,因为在请求中正确设置了字段,但在响应中所有内容都为空。

注意:此代码可以正常运行

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

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

1 个答案:

答案 0 :(得分:0)

根据此documentationok(T body)根据参数T body构建响应主体,您正在传递ResponseSuccess对象,这可能是这里的问题,我不知道ResponseSuccess类中的内容(无法找到该类的文档,因此我无法确定问题可能在该类中的哪个位置),但我会在那里查找问题。