gpt4 book ai didi

json - 需要有关 RestTemplate postForObject() 方法的帮助

转载 作者:行者123 更新时间:2023-12-04 20:09:34 24 4
gpt4 key购买 nike

我必须使用 postForObject() 将 JSON 数据从一种服务方法发送到另一种服务方法方法。
我在 RestTemplate 上看到了一个例子在 this link .
postForObject()方法具有以下格式:

User returns = rt.postForObject(uri, u, User.class, vars);

或者
User returns = rt.postForObject(uri, u, User.class);

我想知道,使用 postForObject() 后方法,如果我们实现服务方法来接受 User对象,它会是什么样子?

在我的项目中,我有这样的代码
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
String uri = "http://testcode.com/myapp/api/launchservices";
ServiceRequest request = new ServiceRequest();
request.setId(UUID.randomUUID().toString());
....

我在这一行遇到错误:
ServiceRequest req = restTemplate.postForObject(uri, request, ServiceRequest.class);

执行此操作时,我收到此错误消息:
org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:88)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:537)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:493)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:452)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:302)

我的实现方法是:
@RequestMapping(value = "/launchservices", method = RequestMethod.POST)
@ResponseBody
public boolean launchServices(@PathVariable ServiceRequest request) {
System.out.println("Request: "+request.toString());
return true;
}

如何摆脱这种情况? URI 是什么?

最佳答案

我得到了这个问题的解决方案。

在这个例子中,方法 postForObject 返回一个类“ServiceRequest”的对象

ServiceRequest req = restTemplate.postForObject(uri, request, ServiceRequest.class);

所以,用上面的 实现这个服务的方法'uri' 应该返回一个类 的对象服务请求
它所需要的只是,在实现方法上稍作修改如下
@RequestMapping(value = "/launchservices", method = RequestMethod.POST,  headers = "Accept=application/json")
@ResponseBody
public ServiceRequest launchServices(@RequestBody ServiceRequest request) {
System.out.println("Request: "+request.toString());
return request;
}

关于json - 需要有关 RestTemplate postForObject() 方法的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20113743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com