Mengesah dengan Pengesahan Asas dalam Java
Untuk meniru arahan curl, yang menggunakan pengesahan asas untuk permintaan HTTP, seseorang boleh menggunakan perpustakaan HttpClient di Jawa. Walau bagaimanapun, beberapa isu telah dihadapi semasa menggunakan pustaka ini.
Dalam percubaan pertama menggunakan Commons HttpClient 3.0, Ralat Pelayan Dalaman 500 telah dikembalikan. Kod yang dimaksudkan ialah:
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") ); ...
Ralat yang sama berlaku apabila menggunakan Commons HttpClient 4.0.1:
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") ); ...
Masalahnya terletak pada cara pengesahan dikendalikan. Pendekatan yang betul untuk pengesahan asas menggunakan HttpClient 4 ialah menetapkan pengepala "Kebenaran" sebelum menghantar permintaan:
// 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);
Dengan mengikuti kaedah ini, pengesahan asas boleh berjaya dilaksanakan menggunakan perpustakaan HttpClient dalam Java.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengesahan Asas dengan HttpClient di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!