【问题标题】:403 when using spring boot, but works well with postman [duplicate]使用弹簧靴时出现403,但与邮递员配合良好[重复]
【发布时间】:2018-04-26 15:28:34
【问题描述】:

我正在用 url 上的邮递员进行 api 调用:

https://cex.io/api/order_book/BTC/USD

普通的 GET 没有标题没有参数什么都没有。但与 java 相同:

RestTemplate rt = new RestTemplate();
rt.getForObject("https://cex.io/api/order_book/BTC/USD", String.class);

让我 403。问题出在哪里?

【问题讨论】:

  • Postman 返回的 HTTP 代码是什么?应该是一样的。
  • 来自他们的api documentation - 他们确实有速率限制,将您限制为每 10 分钟 600 个请求。可能是你在测试期间超过了。
  • 我离 600 还差得很远,邮递员的 http 代码是 200ok

标签: java spring


【解决方案1】:

RestTemplate 设置“User-Agent: Java_version”标头,您尝试查询的站点似乎拒绝使用该用户代理进行访问。

您可以显式设置用户代理,而不是默认设置,例如:

    HttpHeaders headers = new HttpHeaders();
    headers.set("User-agent", "SomeUserAgent");
    HttpEntity<String> entity = new HttpEntity<String>(headers);

    RestTemplate rt = new RestTemplate();
    String result = rt.exchange("https://cex.io/api/order_book/BTC/USD", HttpMethod.GET, entity, String.class).getBody();

【讨论】:

  • 这应该被接受为答案
  • 是的,这就是问题所在!
猜你喜欢
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2018-04-09
  • 2017-12-22
  • 1970-01-01
  • 2018-02-14
  • 2021-12-22
  • 2019-05-03
相关资源
最近更新 更多