如何使用RESTEasy Client Builder设置用户名和密码?

pin*_*her 2 java http jax-rs resteasy http-headers

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

在此处输入图片说明

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

http://username:password@url.com

使用RESTEasy客户端构建器

 Client client = ClientBuilder.newClient();
 WebTarget target = client.target("http://url.com");
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*tha 5

看起来像基本身份验证。如果是这种情况,您只需将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)....
Run Code Online (Sandbox Code Playgroud)

Base64我使用的类来自Java8。如果您未使用Java 8,则有些库具有Base64支持。在Java 8之前,有一个com.sun内部Base64类,但建议不要使用它们。

如果您只想运行快速测试(没有Java 8或不想去寻找lib),则可以转到该站点并输入您的代码username:password并对其进行编码,然后复制并粘贴您的代码。

例如:

base64encode(username:password) == dXNlcm5hbWU6cGFzc3dvcmQ=
Run Code Online (Sandbox Code Playgroud)