J'essaie d'ajouter un en-tête pour ma demande en utilisant HttpUrlConnection
mais la méthode setRequestProperty()
ne semble pas fonctionner. Le côté serveur ne reçoit aucune demande avec mon en-tête.
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()
sur URLConnection?connection.setRequestMethod("GET");
(ou POST ou tout ce que vous voulez)?authorization
à la chaîne vide. Si l'unusername
ou l' autrepassword
est nul, alorsauthorization
sera la chaîne vide, pas null. Par conséquent, la finaleif
sera exécutée, mais la"Authorization"
propriété sera définie sur vide, me semble-t-il.Réponses:
J'ai utilisé le code suivant dans le passé et il avait fonctionné avec l'authentification de base activée dans TomCat:
Vous pouvez essayer le code ci-dessus. Le code ci-dessus est pour POST, et vous pouvez le modifier pour GET
la source
postData
dans votre exemple?String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());
Juste parce que je ne vois pas ce morceau d'informations dans les réponses ci-dessus, la raison pour laquelle l'extrait de code initialement publié ne fonctionne pas correctement est parce que la
encodedBytes
variable est unebyte[]
et non uneString
valeur. Si vous passez lebyte[]
à anew String()
comme ci-dessous, l'extrait de code fonctionne parfaitement.la source
Si vous utilisez Java 8, utilisez le code ci-dessous.
la source
Enfin, cela a fonctionné pour moi
la source
Votre code est correct. Vous pouvez également utiliser la même chose de cette façon.
Son code de réponse de retour 200 si l'autorisation est réussie
la source
Avec RestAssurd, vous pouvez également effectuer les opérations suivantes:
la source
given()
censé être?Étape 1: obtenir l'objet HttpURLConnection
Étape 2: ajoutez des en-têtes à HttpURLConnection à l'aide de la méthode setRequestProperty.
Lien de référence
la source