Authentifizierung mit Basisauthentifizierung in Java
Um den Curl-Befehl zu emulieren, der die Basisauthentifizierung für HTTP-Anfragen verwendet, kann man die HttpClient-Bibliothek verwenden in Java. Bei der Verwendung dieser Bibliothek sind jedoch einige Probleme aufgetreten.
Beim ersten Versuch mit Commons HttpClient 3.0 wurde ein 500 Internal Server Error zurückgegeben. Der betreffende Code ist:
import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.UsernamePasswordCredentials; import org.apache.commons.httpclient.auth.AuthScope; import org.apache.commons.httpclient.methods.PostMethod; ... // Set authentication credentials client.getState().setCredentials( new AuthScope("ipaddress", 443, "realm"), new UsernamePasswordCredentials("test1", "test1") ); ...
Der gleiche Fehler ist bei der Verwendung von Commons HttpClient 4.0.1 aufgetreten:
import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; ... // Set authentication credentials httpclient.getCredentialsProvider().setCredentials( new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials("test1", "test1") ); ...
Das Problem liegt in der Art und Weise, wie die Authentifizierung gehandhabt wird. Der richtige Ansatz für die Basisauthentifizierung mit HttpClient 4 besteht darin, den Header „Authorization“ vor dem Senden der Anfrage festzulegen:
// Create a Base64 encoded string for the credentials String encoding = Base64.getEncoder().encodeToString((user + ":" + pwd).getBytes()); // Create the HTTP request with the correct header HttpPost httpPost = new HttpPost("http://host:port/test/login"); httpPost.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + encoding); // Execute the request and handle the response accordingly HttpResponse response = httpClient.execute(httpPost);
Durch Befolgen dieser Methode kann die Basisauthentifizierung mithilfe der HttpClient-Bibliothek in Java erfolgreich implementiert werden.
Das obige ist der detaillierte Inhalt vonWie implementiert man die Basisauthentifizierung mit HttpClient in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!