Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Melakukan Pengesahan Asas HTTP dengan HttpClient di Java?

Mary-Kate Olsen
Lepaskan: 2024-11-17 19:45:02
asal
412 orang telah melayarinya

How to Perform HTTP Basic Authentication with HttpClient in Java?

Pengesahan Asas HTTP dengan HttpClient dalam Java

Dalam artikel ini, kami akan meneroka cara melaksanakan Pengesahan Asas HTTP menggunakan perpustakaan HttpClient di Java . Pengesahan Asas HTTP ialah mekanisme pengesahan yang mudah dan digunakan secara meluas yang membolehkan pelanggan memberikan bukti kelayakannya (nama pengguna dan kata laluan) untuk mengakses sumber yang dilindungi.

HttpClient 3.0

Anda menyebut menghadapi Ralat Pelayan Dalaman 500 semasa menggunakan HttpClient 3.0. Berikut ialah versi ubah suai kod anda yang sepatutnya berfungsi:

    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();
        }
    }
Salin selepas log masuk

HttpClient 4.0.1

Untuk HttpClient 4.0.1, anda boleh mencuba kod berikut:

    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();
        }
}
Salin selepas log masuk

Penyelesaian Alternatif

Jika anda terus menghadapi isu, anda boleh mencuba penyelesaian alternatif menggunakan perpustakaan Apache HttpComponents. Berikut ialah contoh:

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();
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Pengesahan Asas HTTP dengan HttpClient di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan