Estou tentando adicionar cabeçalho para minha solicitação usando, HttpUrlConnection
mas o método setRequestProperty()
não parece funcionar. O lado do servidor não recebe nenhuma solicitação com meu cabeçalho.
HttpURLConnection hc;
try {
String authorization = "";
URL address = new URL(url);
hc = (HttpURLConnection) address.openConnection();
hc.setDoOutput(true);
hc.setDoInput(true);
hc.setUseCaches(false);
if (username != null && password != null) {
authorization = username + ":" + password;
}
if (authorization != null) {
byte[] encodedBytes;
encodedBytes = Base64.encode(authorization.getBytes(), 0);
authorization = "Basic " + encodedBytes;
hc.setRequestProperty("Authorization", authorization);
}
connect()
a URLConnection?connection.setRequestMethod("GET");
(ou POST ou o que quiser)?authorization
com a cadeia vazia. Se umusername
oupassword
for nulo,authorization
será a cadeia vazia, não nula. Portanto, a finalif
será executada, mas a"Authorization"
propriedade será definida como vazia, me parece.Respostas:
Eu usei o seguinte código no passado e ele funcionou com a autenticação básica ativada no TomCat:
Você pode tentar o código acima. O código acima é para POST e você pode modificá-lo para GET
fonte
postData
veio no seu exemplo?String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());
Só porque não vejo essa informação nas respostas acima, o motivo pelo qual o snippet de código publicado originalmente não funciona corretamente é porque a
encodedBytes
variável ébyte[]
umString
valor e não um . Se você passarbyte[]
para anew String()
como abaixo, o trecho de código funcionará perfeitamente.fonte
Se você estiver usando o Java 8, use o código abaixo.
fonte
Finalmente isso funcionou para mim
fonte
Seu código está correto. Você também pode usar a mesma coisa dessa maneira.
Seu código de resposta de retorno 200 se a autorização for bem-sucedida
fonte
Com o RestAssurd, você também pode fazer o seguinte:
fonte
given()
deveria ser?Etapa 1: Obter o objeto HttpURLConnection
Etapa 2: adicione cabeçalhos à HttpURLConnection usando o método setRequestProperty.
Link de referência
fonte