【问题标题】:GET request not working when using Rest Template使用 Rest 模板时 GET 请求不起作用
【发布时间】:2017-08-12 07:59:17
【问题描述】:

我正在尝试使用来自Spring 的RestTemplate 发送GET 请求,但由于某种原因,当我执行restTemplate.getForEntity(uri, String.class) 时,我的回复是这样的:

"\r\n"

状态码为 200 OK。 但是,如果我使用 Postman 将相同的请求发送到相同的链接,则响应正文将按原样出现。

我做错了什么,为什么我的响应正文看起来像这样? 这是我正在使用的代码:

        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setContentType(MediaType.APPLICATION_XML);
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> responseEntity = restTemplate.getForEntity(uri, String.class);
        System.out.println(responseEntity);

【问题讨论】:

  • 尝试添加httpHeaders.setAccept(Arrays.asList(MediaType.APPLICATION_XML));
  • 同样的结果。这是响应机构的限制吗?在 Postman 中确实很大。
  • 我没有看到请求的设置标头 - 类似于 HttpEntity entity = new HttpEntity(headers); ResponseEntity&lt;String&gt; response = restTemplate.exchange( url, HttpMethod.GET, entity, String.class, param);

标签: xml spring spring-boot request postman


【解决方案1】:

为请求设置标头:

HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_XML);
httpHeaders.setAccept(Arrays.asList(MediaType.APPLICATION_XM‌​L));
HttpEntity entity = new HttpEntity(httpHeaders);
ResponseEntity<String> response = restTemplate.exchange(
    url, HttpMethod.GET, entity, String.class);

【讨论】:

  • 同样的问题。响应正文为“\r\n”。也许身体的长度是造成这种情况的原因?
  • 您的回复是xml?也许添加restTemplate.getMessageConverters().add(new SimpleXmlHttpMessageConverter());
  • 或者简单:String result = restTemplate.getForObject(uri, String.class);
  • 还是什么都没有。即使我将 url 链接粘贴到浏览器中,响应正文也会正常显示。
猜你喜欢
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-27
相关资源
最近更新 更多