如何使用RESTEasy客户端构建器设置用户名和密码?

时间:2015-06-04 11:26:51

标签: java http http-headers jax-rs resteasy

我有一个需要身份验证的网址(就像会出现一个浏览器弹出窗口,询问用户名和密码。)

enter image description here

通常,我们可以使用以下格式来实现此目的:

http://username:password@url.com

使用RESTEasy客户端构建器

 Client client = ClientBuilder.newClient();
 WebTarget target = client.target("http://url.com");

如何在不必自己构建http://username:password@url.com的情况下实现它?我已经看过是否有任何方法可以用来设置它而没有运气。此外,我不确定如何传递这些凭据,标题,cookie等。

1 个答案:

答案 0 :(得分:4)

看起来像Basic Authentication。如果是这种情况,您只需将Authorization标题设置为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类来自Java 8.如果您不使用Java 8,那么有些库具有Base64支持。在Java 8之前,有一个com.sun内部Base64类,但建议使用它们。

如果您只想进行快速测试(并且没有Java 8或者不想寻找lib),您可以转到this site并输入您的{{1}并编码它,然后只需复制并粘贴到您的代码。

例如:

username:password