Ich versuche, einen Header für meine Anfrage hinzuzufügen, HttpUrlConnection
aber die Methode setRequestProperty()
scheint nicht zu funktionieren. Die Serverseite erhält keine Anfrage mit meinem Header.
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()
rufst du die URLConnection an?connection.setRequestMethod("GET");
(oder POST oder was auch immer Sie wollen)?authorization
die leere Zeichenfolge. Wenn entwederusername
oderpassword
null ist,authorization
ist die leere Zeichenfolge nicht null. Daher wird das Finaleif
ausgeführt, aber die"Authorization"
Eigenschaft wird auf leer gesetzt, scheint mir.Antworten:
Ich habe in der Vergangenheit den folgenden Code verwendet und er hat mit der in TomCat aktivierten Basisauthentifizierung funktioniert:
Sie können den obigen Code ausprobieren. Der obige Code gilt für POST und kann für GET geändert werden
quelle
postData
in Ihrem Beispiel?String basicAuth = "Basic " + java.util.Base64.getEncoder().encodeToString(userCredentials.getBytes());
Nur weil ich diese Informationen in den obigen Antworten nicht sehe, funktioniert der ursprünglich veröffentlichte Codefragment nicht richtig, weil die
encodedBytes
Variable einbyte[]
und keinString
Wert ist. Wenn Sie dasbyte[]
an anew String()
wie unten übergeben, funktioniert das Code-Snippet einwandfrei.quelle
Wenn Sie Java 8 verwenden, verwenden Sie den folgenden Code.
quelle
Endlich hat das bei mir geklappt
quelle
Ihr Code ist in Ordnung. Auf diese Weise können Sie dasselbe auch verwenden.
Sein Rückgabeantwortcode 200, wenn die Autorisierung erfolgreich ist
quelle
Mit RestAssurd können Sie auch Folgendes tun:
quelle
given()
soll sein?Schritt 1: HttpURLConnection-Objekt abrufen
Schritt 2: Fügen Sie der HttpURLConnection mithilfe der setRequestProperty-Methode Header hinzu.
Referenz - Link
quelle