簡體   English   中英

帶有Authentication頭的Java Jersey HTTPS GET請求

[英]Java Jersey HTTPS GET request with Authentication header

我正在嘗試將支持服務的“Mollie”( http://www.mollie.nl )集成到Java環境中,該服務通過HTTPS請求工作。

至於這篇文章,我將使用以下請求來解釋:在PHP中(因為我有PHP背景)我可以使用cURL:

$ curl -X GET https://api.mollie.nl/v1/methods \
-H "Authorization: Bearer API-KEY"

哪有回應:

在此輸入圖像描述

從DHC(或Postman)測試REQUEST返回正確的響應。

在此輸入圖像描述

所以在Java中我使用Jersey庫來嘗試訪問請求:

    Client client = Client.create();
    WebResource webResource =   client.resource("https://api.mollie.nl/v1/methods");
    webResource.header("Authorization", "Bearer API-KEY");
    ClientResponse response = webResource    
            .header("Content-Type", "application/json;charset=UTF-8")
            .type("application/json")
            .accept("application/json")
            .get(ClientResponse.class);

    int statusCode = response.getStatus();
    if (statusCode == 401) {
        throw new AuthenticationException("Invalid Username or Password");
    }

    String responseCall = response.getEntity(String.class);

執行Java代碼時,請求會拋出ClientHandlerException:

HTTP Status 500 - com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection timed out: connect

我正在從Apache localhost服務器運行Java測試。 但我無法弄清楚為什么Java請求會給出超時,因為身份驗證標頭似乎設置正確(至少對我而言)。

我注意到的是訪問請求的路徑時https://api.mollie.nl/v1/methods它顯示了一個用於身份驗證的彈出窗口。

獲得有關此問題的有用提示或信息會很高興。 我錯過了什么嗎?

謝謝!

鑒於所有的工作正常(我不確定為什么會導致超時),我看錯了一件事是你的用法

webResource.header("Authorization", "Bearer API-KEY");

header返回WebResource.Builder ,並且不會將標頭添加到當前WebResource 因此,您發送的請求沒有標頭。 您可以通過添加LoggingFilter來檢查它

client.addFilter(new com.sun.jersey.api.client.filter.LoggingFilter(System.out));

你可以通過這樣做解決這個問題

ClientResponse response = webResource
        .header("Authorization", "Bearer API-KEY");    
        .header("Content-Type", "application/json;charset=UTF-8")

只需將標題移動到方法鏈接。

我已經解決了上述問題。 顯然工作PROXY服務器阻止了傳出的HTTPS請求。 從非代理環境進行測試可以解決問題。 謝謝你的建議!

暫無
暫無

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

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