【问题标题】:How to set username and password using RESTEasy client builder?如何使用 RESTEasy 客户端生成器设置用户名和密码?
【发布时间】:2015-06-04 11:26:50
【问题描述】:

我有一个需要身份验证的 url(就像一个浏览器弹出询问用户名和密码。)

一般来说,我们可以使用以下格式来实现:

http://username:password@url.com

使用 RESTEasy 客户端构建器

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

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

【问题讨论】:

  • 这是什么类型的认证,Basic??

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


【解决方案1】:

看起来像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 或不想去寻找库),您可以转到 this site 并输入您的 username:password 并进行编码它,然后只需复制并粘贴到您的代码中。

例如:

base64encode(username:password) == dXNlcm5hbWU6cGFzc3dvcmQ=

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多