首页 > 解决方案 > 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

这不起作用,我收到此错误。有什么建议我该如何解决?

标签: javaspring

解决方案


%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 = [等等。

你可以检查这个。

POST 请求中的 %5B 和 %5D 代表什么?


推荐阅读