Der Suchtpunkt bei der Durchführung der Basisauthentifizierung mit Java URLConnection

Wenn die Serverseite die Standardauthentifizierung unterstützt, können Sie über die folgende URL darauf zugreifen (die folgende URL ist ein Dummy für den Artikel).

http://username:[email protected]

Wenn Sie mit Curl schlagen, wird das erwartete Ergebnis wie unten gezeigt zurückgegeben.

$ curl http://username:[email protected]

Dies mit einer Java URLConnection zu tun, schlägt fehl.

URL url = new URL("http://username:[email protected]");
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();  //Hier scheitern

Unter Android erhalte ich die folgende Ausnahme.

java.io.FileNotFoundException: http://username:[email protected]
     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:250)
     at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
     at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)
     at com.example.ogata.Test$1.run(Test.java:53)

Java gibt die folgenden Ausnahmen:

java.io.IOException: Server returned HTTP response code: 401 for URL: http://username:[email protected]
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1876)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
	at Test$1.run(Test.java:31)

In Java wird die Basisauthentifizierung mit URLConnection wie folgt durchgeführt.

URL url = new URL("http://example.com");
URLConnection conn = url.openConnection();
conn.setRequestProperty("Authorization", "Basic " + Base64.encodeToString("username:password".getBytes(), Base64.NO_WRAP));
// conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString("username:password".getBytes()));
InputStream is = conn.getInputStream();

Die Base64-API unterscheidet sich geringfügig für Android und Java 8. Die oben auskommentierte Zeile ist Java 8.

Recommended Posts

Der Suchtpunkt bei der Durchführung der Basisauthentifizierung mit Java URLConnection
Grundlegende Authentifizierung mit Java 11 HttpClient
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Berechnen Sie die Ähnlichkeitsbewertung von Zeichenketten mit JAVA
CI die Architektur von Java / Kotlin-Anwendungen mit ArchUnit
Überwachen Sie den internen Status von Java-Programmen mit Kubernetes
Überprüfen Sie das Verhalten von Java Intrinsic Locks mit bpftrace
[Java] Beim Schreiben der Quelle ... Memorandum ①
Die Geschichte von dto, dao-like mit Java, SQLite
Ersetzen Sie nur einen Teil des URL-Hosts durch Java
Zusammenfassung der Verwendung des im IE festgelegten Proxy-Sets bei der Verbindung mit Java
[Java] Vereinfachen Sie die Implementierung der Datenverlaufsverwaltung mit Reladomo
Zählen Sie die Anzahl der Stellen nach dem Dezimalpunkt in Java
Geben Sie beim Erstellen mit Maven den Zeichencode der Quelle an
Informationen zum Verhalten beim Erstellen einer Dateizuordnung mit Java
Stellen Sie sicher, dass Sie das Java compareTo-Ergebnis mit 0 vergleichen
Lesen Sie die Daten der Shizuoka Prefecture Point Cloud DB mit Java und erstellen Sie Luftbilder und Höhen-PNGs.
Lesen Sie die Daten der Shizuoka Prefecture Point Cloud DB mit Java und versuchen Sie, die Baumhöhe zu ermitteln.
Umgang mit Java-Gleitkomma Beim Lesen des Nachschlagewerks [Hinweis]
Wechseln Sie die von SDKMAN installierte Java-Version, wenn Sie Verzeichnisse verschieben
[Java1.8 +] Mit LocalDate das Datum des nächsten × Tages abrufen
Probieren Sie HelloWorld mit der Mindestkonfiguration von Heroku Java Spring-Boot aus
Herstellen einer Verbindung zu einer Datenbank mit Java (Teil 1) Möglicherweise die grundlegende Methode
Eine Geschichte über das Erreichen der League Of Legends-API mit JAVA
Überschreiben Sie den gleichnamigen Upload mit dem BOX SDK (Java).
Ist die von Ihnen verwendete Version von Elasticsearch mit Java 11 kompatibel?
Untersuchungsmethode, wenn die CPU des Servers, auf dem Java ausgeführt wird, schwer ist
[Java] Löschen Sie die Elemente von List
Verwenden Sie die Standardauthentifizierung mit Spring Boot
Verstehen Sie den grundlegenden Mechanismus von log4j2.xml
[Java Edition] Geschichte der Serialisierung
Informationen zur Signaturauthentifizierung mit Java Time 1
Grundlegende Verwendung von Java Optionaler Teil 1
[Hinweis] Behandlung von Java-Dezimalstellen
Grundlegender Verarbeitungsablauf von Java Stream
[Grundkenntnisse in Java] Umfang der Variablen
Der Ursprung von Java-Lambda-Ausdrücken
Grundstruktur des Java-Quellcodes
Die Geschichte eines Game Launcher mit automatischer Ladefunktion [Java]
Lassen Sie uns das Ergebnis der Analyse von Java-Bytecode in einem Klassendiagramm ausdrücken
So ermitteln Sie die Gesamtzahl der Seiten beim Paging in Java
Überprüfen Sie den MX-Eintrag der E-Mail-Adresse mit Java und die Domain
Beim Formatieren mit SimpleDateFormat blieb ich beim Umgang mit Zeitzonen
[Java] Holen Sie sich MimeType aus dem Inhalt der Datei mit Apathce Tika [Kotlin]
Eine Beschreibung des JDBC-Beispiels, die bei der Entwicklung eines benutzerdefinierten Authentifizierungsanbieters mit dem Cognos SDK hilfreich ist