【问题标题】:RestTemplate Simple Get Example [closed]RestTemplate 简单获取示例 [关闭]
【发布时间】:2017-11-09 12:54:42
【问题描述】:

人们...

卷曲线:curl https://api.storify.com/v1/stories/storify

从 storify 生成一个冗长的 JSON 响应。我尝试将其转换为 Spring 的 RestTemplate 如下所示:

@Test
public void test() {
    RestTemplate template = new RestTemplate();
    URI uri=URI.create("https://api.storify.com/v1/stories/storify");
    ResponseEntity<String> response = template.getForEntity(uri,String.class);
    System.out.println("<<<<<<<<<<");
    System.out.println(response.getStatusCode()+" "+response.hasBody());
    System.out.println("<<<<<<<<<<");

    String text = response.getBody();
    System.out.println(response.getBody());
    System.out.println("<<<<<<<<<<");
}

虽然结果状态码为 200,并且 hasBody() 为真,但 getBody() 没有返回任何内容,只是看似空行。如何使用RestTemplate 复制 curl 的结果?

谢谢, 呸呸呸

【问题讨论】:

  • 如果您打印出字符串文本并且不再次调用 getBody,这会改变什么吗?
  • 您可以访问下面的线程。它有完整的工作代码和描述:stackoverflow.com/a/51805956/3073945

标签: java curl spring-web


【解决方案1】:

它对我有用,但是您可以尝试运行以下代码,可能会有所帮助

 RestTemplate restTemplate = new RestTemplate();
 String result = restTemplate.getForObject("https://api.storify.com/v1/stories/storify", String.class);
 System.out.println(result);

此外,如果您使用代理(可能是办公网络),那么不要忘记将代理详细信息添加到您的 RestTemplate。这是 sn-p 添加“10.1.2.3”作为端口号的主机。 80

SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
InetSocketAddress address = new InetSocketAddress("10.1.2.3", 80);
Proxy proxy = new Proxy(Proxy.Type.HTTP,address);
factory.setProxy(proxy);

restTemplate.setRequestFactory(factory);

【讨论】:

    【解决方案2】:

    我终于拿到了这个。感谢 Piyush 的支持,你让我相信它真的 只是我。

    结果:变形虫很好,我的显微镜坏了。该 println 的输出是大量的单行 JSON。我是从 Eclipse 打印的。 Eclipse 控制台不像普通 shell 那样处理这类事情。我没有得到任何输出,因为 Eclipse 没有给我任何输出。在 shell 中运行在这个变体上运行良好,很可能我也尝试过其他 15 个变体。 :)

    谢谢, 呸呸呸

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 2012-04-30
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 2018-08-03
      • 2017-11-26
      • 1970-01-01
      相关资源
      最近更新 更多