如何使用 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=