Rumah > Java > javaTutorial > Bagaimana untuk Melaksanakan Pengesahan Asas HTTP di Java dengan HttpClient: Mengelakkan Perangkap Biasa?

Bagaimana untuk Melaksanakan Pengesahan Asas HTTP di Java dengan HttpClient: Mengelakkan Perangkap Biasa?

Susan Sarandon
Lepaskan: 2024-11-16 11:52:03
asal
1039 orang telah melayarinya

How to Implement HTTP Basic Authentication in Java with HttpClient: Avoiding Common Pitfalls?

Melaksanakan Pengesahan Asas HTTP dalam Java dengan HttpClient

Prelude

Apabila cuba meniru arahan curl dengan pengesahan Asas dalam Java, adalah penting untuk mempertimbangkan berikut:

HttpClient 3.0

public class HttpBasicAuth {
    // ...

    public static void main(String[] args) {
        // ...
        client.getState().setCredentials(
                new AuthScope("hostname"), // Use the IP address or hostname here
                new UsernamePasswordCredentials("username", "password")
        );
        // ...
    }
}
Salin selepas log masuk

HttpClient 4.0.1

public class HttpBasicAuth {
    // ...

    public static void main(String[] args) {
        // ...
        DefaultHttpClient httpclient = new DefaultHttpClient();

        httpclient.getCredentialsProvider().setCredentials(
                new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
                new UsernamePasswordCredentials("username", "password")
        );
        // ...
    }
}
Salin selepas log masuk

Isu Biasa

Dalam kedua-dua HttpClient Contoh 3.0 dan 4.0.1, Ralat Pelayan Dalaman (500) boleh berlaku disebabkan takrifan skop yang tidak sah. Definisi skop yang betul bergantung pada konfigurasi pelayan sasaran. Dengan menetapkan skop kepada AuthScope.ANY_HOST dan AuthScope.ANY_PORT, anda mengandaikan bahawa bukti kelayakan digunakan untuk mana-mana hos dan port, yang mungkin tidak berlaku. Mengesahkan konfigurasi pelayan sasaran dan menggunakan definisi skop yang sesuai harus menyelesaikan ralat ini.

Kaedah Alternatif (HttpClient 4.0.1)

Satu lagi pendekatan untuk melaksanakan pengesahan Asas menggunakan HttpClient 4.0.1 adalah seperti berikut:

public class HttpBasicAuth {
    // ...

    public static void main(String[] args) {
        // ...
        String encoding = Base64.getEncoder().encodeToString((user + ":" + pwd).getBytes());
        HttpPost httpPost = new HttpPost("http://host:post/test/login");
        httpPost.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + encoding);
        // ...
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengesahan Asas HTTP di Java dengan HttpClient: Mengelakkan Perangkap Biasa?. 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