当前位置: 首页 > 知识库问答 >
问题:

spring boot RestTemplate WebClient-响应主体JSON空

柴嘉禧
2023-03-14

我使用的是Rest模板,也使用了Web客户端。我得到钥匙作为回应,但身体总是空的。使用Postman,我可以看到响应,这是一个JSON。

我的代码片段在下面-

    HttpHeaders headers = new HttpHeaders();
    headers.setBasicAuth("john", "doe");

    HttpEntity<String> request = new HttpEntity<String>(headers);

    ResponseEntity<String> response = restTemplate.exchange(
            "https://www.getMeData.com",
            HttpMethod.GET, request, String.class);

    System.out.println(response.getBody());

回应如下-

{“结果”:[]}

有人面临同样的问题吗?

在《邮差》中,我能看到的回复头是-

键值

内容编码gzip

内容类型的应用程序/JSON;charset=utf-8

传输编码分块

共有1个答案

江德润
2023-03-14

尝试按以下方式添加标头:

HttpHeaders headers = new HttpHeaders();
headers.setBasicAuth("john", "doe");
headers.setContentType(MediaType.APPLICATION_JSON);

 HttpEntity<String> request = new HttpEntity<String>(headers);

 For gZip - use 

Gzip在默认情况下是禁用的,请检查应用程序是否启用了它。如果不使用属性启用Gzip

server.compression.enabled=true  
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json  
server.compression.min-response-size=1024

并添加以下编码以测试

headers.add(HttpHeaders.CONTENT_ENCODING, "gzip");
headers.add(HttpHeaders.ACCEPT_ENCODING, "gzip");

您还可以尝试创建一个新的Http消息转换器,并在调用远程api调用之前将其添加到RestTemplate实例中。

 类似资料:
  • 但是我总是在方法中获得响应。因此,我尝试使用查看响应的错误主体。错误正文包含与原始响应完全相同的内容。 我用控制了response,看看我是否修改了我的响应类wright,它似乎可以。 为什么改型无法转换我的响应? 更新

  • 问题内容: 我正在发出HTTP请求并侦听“数据”: 问题在于响应是分块的,因此“数据”只是发送回的一部分内容。 我如何将全身退回? 问题答案:

  • 我使用的是Spring版本4(Spring data),我想将Object作为JSON返回,我想知道以下代码即使不使用xmlRootElement注释用户类也能工作: 任何机构都可以解释吗?当我需要注释要返回为JSON的对象类时,响应体/响应实体是否自己完成工作?

  • 使用Guzzle,我正在使用JSON格式的一些外部API,通常我获取数据 $data = $request- 但是我无法从这个不同的api中获取数据。数据似乎没有出现在“响应体”中。 这个api调用有效:https://i.ibb.co/80Yk6dx/Screenshot-2.png 这不起作用:https://i.ibb.co/C239ghy/Screenshot-3.png

  • 问题内容: 标题应该很漂亮。 出于调试目的,我想表达为每个服务请求打印响应代码和正文。打印响应代码很容易,但是打印响应主体比较棘手,因为似乎响应主体不容易用作属性。 以下内容不起作用: 当然,我可以轻松地在发出请求的客户端上打印响应,但是我也希望在服务器端进行打印。 PS:如果有帮助,我的所有回复都是json,但希望有一个可以与一般回复配合使用的解决方案。 问题答案: 不确定这是否是最简单的解决方

  • 问题内容: 这是我的控制器内部的方法,其注释为 我期望作为我的json。 这是我的JUnit测试: 这是控制台输出: Even 是一个空字符串。 有人可以建议如何在我的JUnit测试方法中获取JSON,以便完成测试用例。 问题答案: 我使用TestNG进行单元测试。但是在Spring Test Framework中,它们看起来都很相似。所以我相信你的测试如下 如果要检查json键和值,可以使用js