java - Rest tamplate 400 null - 错误请求
问题描述
我有这部分代码:
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();
}
问题是我总是得到 400 null 错误。
当我用过滤器参数大摇大摆地问:[{"attribute":"tapId","filterOperation":"EQUALS","expressionValue":"00b83d4c-afad-47fb-b66b-07c93971c69b"}]
我得到这个网址:
?filter=%5B%7B"attribute"%3A"tapId"%2C"filterOperation"%3A"EQUALS"%2C"expressionValue"%3A"00b83d4c-afad-47fb-b66b-07c93971c69b"%7D%5D
这是有效的,但是当我用这部分代码调用它时:
builder.queryParam("filter", String.join(",", filter));
接着
ResponseEntity<T> responseEntity = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, null,
new ParameterizedTypeReference<T>() {
});
我得到这个网址
?filter=%7B%22attribute%22:%22tapId%22,%22filterOperation%22:%22EQUALS%22,%22expressionValue%22:%2200b83d4c-afad-47fb-b66b-07c93971c69b%22%7D
这不起作用,我收到此错误。有什么建议我该如何解决?
解决方案
%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 = [
等等。
你可以检查这个。
推荐阅读
- javascript - 找不到或无法读取要导入的文件:@material/elevation/mixins
- c# - 重新启动游戏而不退出应用程序
- java - MATLAB java.util.zip.ZipException:读取 zraw 时存储的块长度无效
- node.js - 如何修复保管箱节点 api 错误 400 请求标头或 Cookie 太大
- excel - Countifs 语句中的多个条件范围
- google-chrome-extension - 在制作 chrome 扩展时,用我自己的脚本替换网站调用的脚本
- angular - 在 ngFor 循环中禁用按钮
- c# - 从字符串馈送 CheckedListBox
- laravel - 如何在控制器中传递用户名?
- c++ - constexpr 静态 std::array
使用 MSVC2013 编译失败