使用 spring boot 时为 403,但与邮递员一起使用效果很好

fil*_*zyk 3 java spring

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

https://cex.io/api/order_book/BTC/USD
Run Code Online (Sandbox Code Playgroud)

简单的 GET 没有标题没有参数没有什么。但与 java 相同:

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

让我 403. 问题出在哪里?

hel*_*ark 8

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();
Run Code Online (Sandbox Code Playgroud)