1 回答
TA贡献2036条经验 获得超8个赞
根据讨论,我已经浏览了您提供的 API。实际上,api 在进行 rest 调用时提供了误导性消息。如果您查看从 api 调用收到的错误消息的详细信息,它说。
本网站 (api.pro.coinbase.com) 的所有者已根据您浏览器的签名 (4e0a3c06895d89af-ua21) 禁止您访问。
所以答案是什么 ?api 实际上希望调用应该从浏览器进行,并且每个浏览器都会发送一个名为“User-Agent”的标头。看看什么是用户代理。不过,我已经解决了你的问题,你可以查看下面的完整代码。
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
public class TestGetCallByJersey {
public static void main(String[] args) {
String resourceUri = "https://api.pro.coinbase.com/products";
try {
Client client = Client.create();
WebResource webResource = client.resource(resourceUri);
ClientResponse response =
webResource
.accept("application/json")
.header("User-Agent", "Mozilla/5.0")
.get(ClientResponse.class);
System.out.println("response status = " + response.getStatus());
String result = response.getEntity(String.class);
System.out.println("Output from api call .... \n" + result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
目前,我已经在 Java 8 中进行了测试,并使用了以下 jar 文件。
jersey-client 版本 1.8 如果你使用 Maven,你可以在 pom.xml 中包含以下依赖项。
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.8</version>
</dependency>
添加回答
举报