2015-06-04 68 views
1

我有需要身份验证的URL(如浏览器弹出出现,询问用户名和密码。)如何使用的RESTEasy客户端生成器设置用户名和密码?

enter image description here

一般情况下,我们可以使用下面的格式来实现这一目标:

http://username:[email protected]

使用的RESTEasy客户建设者

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

如何实现它而不必自己构建http://username:[email protected]?我看过是否有任何方法可以用来设置它,但没有运气。另外我不知道这些证书的传递方式,头,cookie等。

+0

哪种类型的验证是,基本? –

+0

@peeskillet是的。 – pinkpanther

回答

3

貌似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= 
相关问题