我有一个需要身份验证的网址(就像会出现一个浏览器弹出窗口,询问用户名和密码。)
通常,我们可以使用以下格式来实现此目的:
http://username:password@url.com
使用RESTEasy客户端构建器
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://url.com");
如何在不必自己构建http://username:password@url.com
的情况下实现它?我已经看过是否有任何方法可以用来设置它而没有运气。此外,我不确定如何传递这些凭据,标题,cookie等。
答案 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