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