Passando credenciais de autenticação básicas a cada solicitação com o WebClient HtmlUnit

Estou tentando escrever um teste de fumaça simples para um aplicativo da web.

O aplicativo normalmente usa autenticação baseada em formulário, mas também aceita autenticação básica, mas como o padrão é a autenticação baseada em formulário, ele nunca envia uma autenticação necessária, mas apenas envia o formulário de login.

No teste, tento enviar o header de autenticação básica usando

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("") 

Eu também tentei preencher as credenciais em um object WebRequest e passar isso para o método webClient.getPage .

Mas no servidor eu não recebo um header de autenticação. Eu suspeito que o WebClient só envia o header de autenticação se ele for solicitado explicitamente pelo servidor, o que nunca acontece.

Então, a questão é como posso fazer o WebClient enviar o header de autenticação em todas as solicitações, incluindo o primeiro?

Isso pode ajudar:

WebClient.addRequestHeader (nome da cadeia, valor da cadeia)

Mais específico pode criar um header de autenticação como este

  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()); }