使用HtmlUnit WebClient传递每个请求的基本身份validation凭据

我正在尝试为Web应用程序编写一个简单的冒烟测试。

应用程序通常使用基于表单的身份validation,但也接受基本身份validation,但由于默认情况下是基于表单的身份validation,因此它永远不会发送所需的身份validation,而只是发送登录表单。

在测试中,我尝试使用发送基本的auth头

WebClient webClient = new WebClient(); DefaultCredentialsProvider creds = new DefaultCredentialsProvider(); // Set some example credentials creds.addCredentials("usr", "pwd"); // And now add the provider to the webClient instance webClient.setCredentialsProvider(creds); webClient.getPage("") 

我还尝试在WebRequest对象中填充凭据并将其传递给webClient.getPage方法。

但在服务器上我没有获得身份validation标头。 我怀疑WebClient只有在服务器明确询问它时才会发送身份validation标头,这种情况从未发生过。

所以问题是如何让WebClient在每个请求上发送Authentication头,包括第一个请求?

这可能有所帮助:

WebClient.addRequestHeader(String name,String value)

更具体的一个可以创建这样的身份validation标头

  private static void setCredentials(WebClient webClient) { String username = "user"; String password = "password"; String base64encodedUsernameAndPassword = base64Encode(username + ":" + password); webClient.addRequestHeader("Authorization", "Basic " + base64encodedUsernameAndPassword); } private static String base64Encode(String stringToEncode) { return DatatypeConverter.printBase64Binary(stringToEncode.getBytes()); }