我正在尝试将支持服务’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")
只需将标题移动到方法链接.
标签:java,jersey,jersey-client 来源: https://codeday.me/bug/20190528/1170752.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。