用于JSON有效负载的GET请求的RestTemplate

时间:2019-02-26 22:04:02

标签: java json spring spring-boot resttemplate

我正在尝试为GET方法创建测试单元,该方法需要JSON有效负载才能基于JSON中提供的数据获取结果。

我尝试过:

   User user = new User();
   user.setUserId(userId);

   ResponseEntity<User> getResponse = restTemplate.exchange(getRootUrl() + "/getUser", HttpMethod.GET, user, User.class);

    assertNotNull(getResponse);
    assertEquals(getResponse.getStatusCode(), HttpStatus.OK);

但是它为exchangeuser上抛出了一个错误,表明该对象不合适。

1 个答案:

答案 0 :(得分:1)

method documentation非常简单

  

对给定的URI模板执行HTTP方法,将给定的请求实体写入请求,然后将响应作为ResponseEntity返回。   使用给定的URI变量(如果有)扩展URI模板变量。

指定者: 接口RestOperations中的交换 参数: url-URL method-HTTP方法(GET,POST等) requestEntity-要写入请求的实体(标头和/或主体)可以为null responseType-返回值的类型 uriVariables-模板中要扩展的变量

您需要将用户更改为HttpEntity

  HttpHeaders headers = new HttpHeaders();
  headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
  JSONObject parm = new JSONObject();
   parm.put("user", user);
   HttpEntity<JSONObject> entity = new HttpEntity<JSONObject>(parm, headers);