Java Rest tamplate 400 null-请求错误
我有这部分代码:Java Rest tamplate 400 null-请求错误,java,spring,Java,Spring,我有这部分代码: try { ResponseEntity<T> responseEntity = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, null, new ParameterizedTypeReference<T>() { }); i
try {
ResponseEntity<T> responseEntity = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, null,
new ParameterizedTypeReference<T>() {
});
if (responseEntity == null || responseEntity.getBody() == null || responseEntity.getBody() == null) {
throw ApiException.createFrom(ResponseCode.REQUEST_INVALID, "Severity for this input is not found!");
} else {
return (LinkedHashMap<Object, Object>) responseEntity.getBody();
}
builder.queryParam("filter", String.join(",", filter));
这是可行的,但当我用这部分代码调用它时:
try {
ResponseEntity<T> responseEntity = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, null,
new ParameterizedTypeReference<T>() {
});
if (responseEntity == null || responseEntity.getBody() == null || responseEntity.getBody() == null) {
throw ApiException.createFrom(ResponseCode.REQUEST_INVALID, "Severity for this input is not found!");
} else {
return (LinkedHashMap<Object, Object>) responseEntity.getBody();
}
builder.queryParam("filter", String.join(",", filter));
然后
ResponseEntity<T> responseEntity = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, null,
new ParameterizedTypeReference<T>() {
});
这是不工作,我得到这个错误。
有什么建议我该如何解决这个问题吗
%5B%7B"attribute"%3A"tapId"%2C"filterOperation"%3A"EQUALS"%2C"expressionValue"%3A"00b83d4c-afad-47fb-b66b-07c93971c69b"%7D%5D
这是过滤器参数对象直接转换的结果
String filterObject = "[{\"attribute\":\"tapId\",\"filterOperation\":\"EQUALS\",\"expressionValue\":\"00b83d4c-afad-47fb-b66b-07c93971c69b\"}]"
我认为下面的方法应该有效
builder.queryParam("filter", filterObject);
我为什么这么想
因为%5B=[
等等
你可以检查一下
这是可行的,但问题是我的筛选器是“动态”的,因此我为不同的服务调用不同的筛选器,有没有办法使其成为“动态”的?使用JSONArray来构造筛选器。然后将其转换为字符串。我不确定如何执行此操作,因为我有多个“键”…你能给我一些指导或例子吗?我想找到任何但没有成功的
{“attribute”:“tapId”,…}
只是一个映射(或使用任何库中的json对象)。使用key填充参数。将其放入数组列表或json数组中,并使用toString值进行筛选