Jersey客户端REST API生成http 403错误

时间:2016-12-08 16:14:21

标签: java jersey-client

我的java项目上的Jersey客户端REST-API生成HTTP 403错误。虽然这个项目运行良好,可以调用其他Restful API,除了假的基于在线的REST API JSONPlaceholder。请在下面找到我的代码:

public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    Client client = Client.create();
    WebResource webResource =   client.resource("http://jsonplaceholder.typicode.com/posts");
    ClientResponse response = webResource.accept("application/json")
            .get(ClientResponse.class);
    if(response.getStatus() != 200) {
        throw new RuntimeException("Failed http error code :" + response.getStatus());
    }
    String output = response.getEntity(String.class);
    System.out.println(output);

错误:

Click this link to see error !

2 个答案:

答案 0 :(得分:1)

当我昨天读到这个问题时,我本能地想到了用户代理标题。你的评论证明了这一点。为了给出更可读的答案,我将提供以下有关您的示例的工作代码(尽管如此,我打赌不提供UA不是最佳方式;)。)

Client c = Client.create();
WebResource wr = c.resource("http://jsonplaceholder.typicode.com/posts");
ClientResponse resp = wr.accept("application/json").header("user-agent", "").get(ClientResponse.class);
if (resp.getStatus() != 200) {
    throw new RuntimeException("Failed http error code :" + resp.getStatus());
}
String output = resp.getEntity(String.class);
System.out.println(output);

答案 1 :(得分:1)

正如我在评论中提到的,在webResource实例的标题中设置键(" user-agent")和值("")引领了解决方案。希望以下代码片段为您提供更好的主意。

Client client = Client.create();
WebResource webResource = client.resource("http://jsonplaceholder.typicode.com/posts");
ClientResponse response = webResource.accept("application/json")
            .header("user-agent", "")
            .get(ClientResponse.class);
if(response.getStatus() != 200) {
    throw new RuntimeException("Failed http error code :" + response.getStatus());
}
String output = response.getEntity(String.class);
System.out.println(output);

谢谢大家的好评。