繁体   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