Heim > Java > javaLernprogramm > Hauptteil

Wie führe ich eine HTTP-Basisauthentifizierung mit HttpClient in Java durch?

Mary-Kate Olsen
Freigeben: 2024-11-17 19:45:02
Original
412 Leute haben es durchsucht

How to Perform HTTP Basic Authentication with HttpClient in Java?

HTTP-Basisauthentifizierung mit HttpClient in Java

In diesem Artikel erfahren Sie, wie Sie die HTTP-Basisauthentifizierung mithilfe der HttpClient-Bibliothek in Java durchführen . HTTP-Basisauthentifizierung ist ein einfacher und weit verbreiteter Authentifizierungsmechanismus, der es einem Client ermöglicht, seine Anmeldeinformationen (Benutzername und Passwort) anzugeben, um auf eine geschützte Ressource zuzugreifen.

HttpClient 3.0

Sie haben erwähnt, dass bei der Verwendung von HttpClient 3.0 ein interner Serverfehler 500 aufgetreten ist. Hier ist eine modifizierte Version Ihres Codes, die funktionieren sollte:

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {

            HttpClient client = new HttpClient();

            client.getParams().setAuthenticationPreemptive(true); // Add this line

            client.getState().setCredentials(
                    new AuthScope("ipaddress", 443, "realm"),
                    new UsernamePasswordCredentials("test1", "test1")
                    );

            PostMethod post = new PostMethod(
                    "http://address/test/login");

            post.setDoAuthentication( true );

            try {
                int status = client.executeMethod( post );
                System.out.println(status + "\n" + post.getResponseBodyAsString());
            } finally {
                // release any connection resources used by the method
                post.releaseConnection();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
Nach dem Login kopieren

HttpClient 4.0.1

Für HttpClient 4.0.1 können Sie den folgenden Code ausprobieren:

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        try {
            DefaultHttpClient httpclient = new DefaultHttpClient();

            httpclient.getCredentialsProvider().setCredentials(
                    new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), 
                    new UsernamePasswordCredentials("test1", "test1"));

            // Add this line
            httpclient.setPreemptiveAuth(true); 

            HttpPost httppost = new HttpPost("http://host:post/test/login");

            System.out.println("executing request " + httppost.getRequestLine());
            HttpResponse response;
            response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();

            System.out.println("----------------------------------------");
            System.out.println(response.getStatusLine());
            if (entity != null) {
                System.out.println("Response content length: " + entity.getContentLength());
            }
            if (entity != null) {
                entity.consumeContent();
            }

            httpclient.getConnectionManager().shutdown();  
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}
Nach dem Login kopieren

Alternative Lösung

Wenn weiterhin Probleme auftreten, können Sie mithilfe der Apache HttpComponents-Bibliothek eine alternative Lösung ausprobieren. Hier ist ein Beispiel:

String encoding = Base64.getEncoder().encodeToString((user + ":" + pwd).getBytes());
HttpPost httpPost = new HttpPost("http://host:post/test/login");
httpPost.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + encoding);

System.out.println("executing request " + httpPost.getRequestLine());
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie führe ich eine HTTP-Basisauthentifizierung mit HttpClient in Java durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage