Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc SpringREST客户端,如何序列化客户端请求中的对象_Spring Mvc_Jakarta Ee_Resttemplate_Rest Client - Fatal编程技术网

Spring mvc SpringREST客户端,如何序列化客户端请求中的对象

Spring mvc SpringREST客户端,如何序列化客户端请求中的对象,spring-mvc,jakarta-ee,resttemplate,rest-client,Spring Mvc,Jakarta Ee,Resttemplate,Rest Client,我有一个客户 RestTemplate restTemplate = new RestTemplate(); Result r = restTemplate.getForObject("http://localhost:8080/test?key1=value1",Result.class); 我不想手动将“key1=value1”附加到url中,是否可以使用类似这样的类 class Dto { private String key1; public void setKey1(Stri

我有一个客户

RestTemplate restTemplate = new RestTemplate();
Result r = restTemplate.getForObject("http://localhost:8080/test?key1=value1",Result.class);
我不想手动将“key1=value1”附加到url中,是否可以使用类似这样的类

class Dto {
  private String key1;
  public void setKey1(String key1) {this.key1=key1}
并让spring自动序列化dto对象,因此调用如下

Result r = restTemplate.getForObject("http://localhost:8080/test", Result.class, dto);
restTemplate中有这样的方法,但我无法让它工作,在服务器端我接收到空对象。 我想我在DTO上遗漏了一些注释。 在服务器上我有

@RequestMapping(value = "/test")
@ResponseBody
public DTO test(DTO p) {
    p.setName("received");
    return p;
}

请给我一些建议

考虑到您将所有端点作为常量保存在文件中,您应该在url中使用占位符。在您的情况下,一个URL端点将是
http://localhost:8080/test?key1={0}&anotherParam={1}

restTemplate.getForObject("http://localhost:8080/test", Result.class, "keyVal","anotherKeyVal");
由于最后一个参数的类型为varArgs,它将接受您想要发送的任意多个值,但顺序与您在种子URL中定义键的顺序相同。把它们放在那个位置是由API自己负责的。 [更新]
查看服务器端代码,似乎希望在DTO对象中接收值。为此,您需要使用messageConverter(JSON或XML)发布(并使端点成为POST)数据。这样,您的对象将由messageConverter进行封送和解封。

我使用的是restTemplate.getForObject(“,dto”);但在服务器端,我接收到空dto,这是我的问题。在中回答