如何使用 RESTEasy 客户端生成器设置用户名和密码?
How to set username and password using RESTEasy client builder?
我有一个 url 需要身份验证(就像一个浏览器弹出窗口询问用户名和密码。)
一般我们可以使用如下格式来实现:
http://username:password@url.com
使用 RESTEasy 客户端构建器
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://url.com");
如何在不自己构建 http://username:password@url.com
的情况下实现它?我已经看到是否有任何方法可以用来设置它而没有运气。我也不确定这些凭证是如何传递的,headers,cookies 等..
看起来像 Basic Authentication。如果是这种情况,您只需将 Authorization
header 设置为 Basic base64encode(username:password)
.
例如:
String credentials = "username:password"
String base64encoded = Base64.getEncoder().encodeToString(credentials.getBytes());
Response response = target.request()
.header(HttpHeaders.AUTHORIZATION, "Basic " + base64encoded)....
我使用的 Base64
class 来自 Java 8。如果您不使用 Java 8,有些库支持 Base64。在 Java 8 之前,有一个 com.sun
内部 Base64
class,但建议 不要 使用它们。
如果你只是想运行 快速测试(没有Java 8 或者不想去寻找库),你可以去this site 并输入 username:password
并对其进行编码,然后复制并粘贴到您的代码中。
例如:
base64encode(username:password) == dXNlcm5hbWU6cGFzc3dvcmQ=
我有一个 url 需要身份验证(就像一个浏览器弹出窗口询问用户名和密码。)
一般我们可以使用如下格式来实现:
http://username:password@url.com
使用 RESTEasy 客户端构建器
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://url.com");
如何在不自己构建 http://username:password@url.com
的情况下实现它?我已经看到是否有任何方法可以用来设置它而没有运气。我也不确定这些凭证是如何传递的,headers,cookies 等..
看起来像 Basic Authentication。如果是这种情况,您只需将 Authorization
header 设置为 Basic base64encode(username:password)
.
例如:
String credentials = "username:password"
String base64encoded = Base64.getEncoder().encodeToString(credentials.getBytes());
Response response = target.request()
.header(HttpHeaders.AUTHORIZATION, "Basic " + base64encoded)....
我使用的 Base64
class 来自 Java 8。如果您不使用 Java 8,有些库支持 Base64。在 Java 8 之前,有一个 com.sun
内部 Base64
class,但建议 不要 使用它们。
如果你只是想运行 快速测试(没有Java 8 或者不想去寻找库),你可以去this site 并输入 username:password
并对其进行编码,然后复制并粘贴到您的代码中。
例如:
base64encode(username:password) == dXNlcm5hbWU6cGFzc3dvcmQ=