【发布时间】:2019-09-09 08:36:38
【问题描述】:
我正在尝试将对象作为我的 Spring 应用程序中的请求参数进行请求。
new RestTemplate().getForObject("http://127.0.0.1:8080/items?filter={\"level\":\"BIG\"}", Item.class);
但得到错误:
正如我所发现的,当 UriBuilder 使用 url 解析字符串时会出现问题。 IE。 new URI(...) 给出错误。当我对 Postman 提出相同的请求时,我得到了理想的响应。我如何正确编码网址?我尝试使用 java.net.URLEncoder 但这会给出“IllegalArgumentException: URI is not absolute”错误。
更新:
请求中的过滤器类用于在远程服务器的 mongodb 中进行参数化查询( Query() )。过滤器类:
@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);
}
}
项目对象类:
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Item {
private String id;
private String name;
private Instant timestamp;
}
【问题讨论】:
-
能否添加Item对象
-
Item 是一个简单的数据类。请求中的过滤器类用于在远程服务器的 mongodb 中进行参数化查询( Query() )。但我什至不能用 Filter 对象做请求。
标签: java encoding uri resttemplate