繁体   English   中英

在 Spring Boot 中通过 RestTemplate 在 Json 对象中发布 Json 数组

[英]Post Json Array in Json Object via RestTemplate in Spring Boot

我尝试使用 RestTemplate 在 json 对象中发布数组

{
  "update": {
    "name": "xyz",
    "id": "C2",
    "Description": "aaaaaa",
    "members": ["abc", "xyz"]
  }
}

这是我的 PostMapping 控制器

@PostMapping(value = "/update")
public Update update(@RequestBody Update update) {
    String url = "";
    HttpHeaders headers = createHttpHeaders("username", "passowrd");
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("update", update);
    HttpEntity<JSONObject> request = new HttpEntity<>(jsonObject, headers);
    ResponseEntity<Update> update = restTemplate.exchange(url, HttpMethod.POST,request, Update.class);

    return update.getBody();
}

这是我的 POJO

public class Update {
    private String name;
    private String id;
    private String Descripion;
    private List<String> members;
}

我得到了 500

{
  "timestamp": "2020-03-13T06:31:21.822+0000",
  "status": 500,
  "error": "Internal Server Error",
  "message": "No HttpMessageConverter for org.json.JSONObject and content type \"application/json\""
}

尝试使用 Json 消息转换器配置您的 RestTemplate。

restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

你可以参考这篇博文以获得详细的解释

https://www.baeldung.com/spring-httpmessageconverter-rest

然后按如下所示执行您的休息调用。您将不再需要显式创建 Json 对象。

String url = "";
HttpEntity<Update> request = new HttpEntity<>(update, headers);
ResponseEntity<Update> firewallGroupUpdate = restTemplate.exchange(url, HttpMethod.POST, request, Update.class);
return firewallGroupUpdate.getBody();

将 resttemplate.exchange 更改为 resttemplate.postForObject。 并且还更改了返回字符串的方法。

public String groupUpdate(@RequestBody String groupUpdate) {
        String url = "";
        HttpHeaders headers = createHeaders("username","password");
        headers.setContentType(MediaType.APPLICATION_JSON);
        restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
        HttpEntity<String> requestEntity = new HttpEntity<String>(groupUpdate, headers);
        String response = restTemplate.postForObject(url,requestEntity,String.class);
        return response;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM