Java 如何在请求参数spring中使用对象编码url字符串

Java 如何在请求参数spring中使用对象编码url字符串,java,encoding,uri,resttemplate,Java,Encoding,Uri,Resttemplate,我试图在Spring应用程序中将对象作为请求参数执行请求 new RestTemplate().getForObject("http://127.0.0.1:8080/items?filter={\"level\":\"BIG\"}", Item.class); 但是得到错误: 正如我所发现的,当UriBuilder解析带有url的字符串时会出现问题。即新URI。。。给出了错误。当我向邮递员提出同样的要求时,我得到了令人满意的答复。如何正确编码url?我试图使用java.net.URLEnco

我试图在Spring应用程序中将对象作为请求参数执行请求

new RestTemplate().getForObject("http://127.0.0.1:8080/items?filter={\"level\":\"BIG\"}", Item.class);
但是得到错误:

正如我所发现的,当UriBuilder解析带有url的字符串时会出现问题。即新URI。。。给出了错误。当我向邮递员提出同样的要求时,我得到了令人满意的答复。如何正确编码url?我试图使用java.net.URLEncoder,但这会导致IllegalArgumentException:URI不是绝对错误

更新:

请求中的Filter类用于在远程服务器的mongodb中进行参数化查询。过滤器类别:

@Getter
@NoArgsConstructor
public class Filter {

private Map<String, String> criteria;

@JsonAnySetter
public void add(String key, String value) {
    if (criteria == null) {
        criteria = new HashMap<>();
    }

    criteria.put(key, value);
}
}

我有像你这样的问题,我用下面的代码片段解决它

UriComponentsBuilder renewURIBuilder= UriComponentsBuilder.fromHttpUrl("http://127.0.0.1:8080").path("/items").queryParam("filter", "{'level':BIG}");
UriComponents uriComponent=renewURIBuilder.build(true);
URI uri=uriComponent.toUri();
然后调用resttemplate,如下所示

new RestTemplate().getForObject(uri, Item.class);

希望对您有所帮助

您可以添加Item对象吗?Item是一个简单的数据类。请求中的Filter类用于在远程服务器的mongodb中进行参数化查询。但我甚至不能用Filter对象执行请求。这有帮助吗?我试过了,做得很好
new RestTemplate().getForObject(uri, Item.class);