簡體   English   中英

Jersey 客戶端 REST API 生成 http 403 錯誤

[英]Jersey client REST API generates http 403 error

我的 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);

錯誤:

單擊此鏈接查看錯誤!

當我昨天閱讀這個問題時,我本能地想到了用戶代理標頭。 你的評論證明了這一點。 只是為了給出一個更易讀的答案,我將提供有關您的示例的以下工作代碼(盡管我打賭不提供 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);

正如我在評論中提到的,在 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);

感謝大家的精彩反饋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM