Apache HttpClient - Kullanıcı Kimlik Doğrulaması
HttpClient kullanarak, kullanıcı adı ve şifre gerektiren bir web sitesine bağlanabilirsiniz. Bu bölüm, kullanıcı adı ve şifre isteyen bir siteye karşı bir istemci talebinin nasıl yürütüleceğini açıklar.
Adım 1 - Bir CredentialsProvider nesnesi oluşturun
CredentialsProviderArayüz, kullanıcı oturum açma kimlik bilgilerini tutmak için bir koleksiyon tutar. Örneğini oluşturarak nesnesini oluşturabilirsiniz.BasicCredentialsProvider sınıfı, bu arabirimin varsayılan uygulaması.
CredentialsProvider credentialsPovider = new BasicCredentialsProvider();
Adım 2 - Kimlik Bilgilerini Ayarlayın
CredentialsProvider nesnesine gerekli kimlik bilgilerini şu komutu kullanarak ayarlayabilirsiniz: setCredentials() yöntem.
Bu yöntem, aşağıda belirtildiği gibi iki nesneyi kabul eder -
AuthScope object - Ana bilgisayar adı, bağlantı noktası numarası ve kimlik doğrulama düzeni adı gibi ayrıntıları belirten kimlik doğrulama kapsamı.
Credentials object - Kimlik bilgilerini (kullanıcı adı, şifre) belirtme.
Kimlik bilgilerini kullanarak ayarlayın setCredentials() aşağıda gösterildiği gibi hem ana bilgisayar hem de proxy için yöntem -
credsProvider.setCredentials(new AuthScope("example.com", 80),
new UsernamePasswordCredentials("user", "mypass"));
credsProvider.setCredentials(new AuthScope("localhost", 8000),
new UsernamePasswordCredentials("abc", "passwd"));
Adım 3 - HttpClientBuilder Nesnesi Oluşturun
Oluşturmak HttpClientBuilder kullanmak custom() yöntemi HttpClients sınıf.
//Creating the HttpClientBuilder
HttpClientBuilder clientbuilder = HttpClients.custom();
Adım 4 - Kimlik bilgilerini ayarlayın
Yukarıda oluşturulan credentialsPovider nesnesini bir HttpClientBuilder olarak ayarlayabilirsiniz. setDefaultCredentialsProvider() yöntem.
Önceki adımda oluşturulan CredentialProvider nesnesini istemci oluşturucuya ayarlayın. CredentialsProvider object() yöntemi aşağıda gösterildiği gibi.
clientbuilder = clientbuilder.setDefaultCredentialsProvider(credsProvider);
Adım 5 - CloseableHttpClient'i Oluşturun
İnşa et CloseableHttpClient kullanarak nesne build() yöntemi HttpClientBuilder sınıf.
CloseableHttpClient httpclient = clientbuilder.build()
Adım 6 - Bir HttpGet nesnesi oluşturun ve çalıştırın
HttpGet sınıfını başlatarak bir HttpRequest nesnesi oluşturun. Bu isteği kullanarak gerçekleştirinexecute() yöntem.
//Creating a HttpGet object
HttpGet httpget = new HttpGet("https://www.tutorialspoint.com/ ");
//Executing the Get request
HttpResponse httpresponse = httpclient.execute(httpget);
Misal
Aşağıda, kullanıcı kimlik doğrulaması gerektiren bir hedef siteye karşı bir HTTP isteğinin yürütülmesini gösteren örnek bir program yer almaktadır.
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
public class UserAuthenticationExample {
public static void main(String args[]) throws Exception{
//Create an object of credentialsProvider
CredentialsProvider credentialsPovider = new BasicCredentialsProvider();
//Set the credentials
AuthScope scope = new AuthScope("https://www.tutorialspoint.com/questions/", 80);
Credentials credentials = new UsernamePasswordCredentials("USERNAME", "PASSWORD");
credentialsPovider.setCredentials(scope,credentials);
//Creating the HttpClientBuilder
HttpClientBuilder clientbuilder = HttpClients.custom();
//Setting the credentials
clientbuilder = clientbuilder.setDefaultCredentialsProvider(credentialsPovider);
//Building the CloseableHttpClient object
CloseableHttpClient httpclient = clientbuilder.build();
//Creating a HttpGet object
HttpGet httpget = new HttpGet("https://www.tutorialspoint.com/questions/index.php");
//Printing the method used
System.out.println(httpget.getMethod());
//Executing the Get request
HttpResponse httpresponse = httpclient.execute(httpget);
//Printing the status line
System.out.println(httpresponse.getStatusLine());
int statusCode = httpresponse.getStatusLine().getStatusCode();
System.out.println(statusCode);
Header[] headers= httpresponse.getAllHeaders();
for (int i = 0; i<headers.length;i++) {
System.out.println(headers[i].getName());
}
}
}
Çıktı
Yürütüldüğünde, yukarıdaki program aşağıdaki çıktıyı üretir.
GET
HTTP/1.1 200 OK
200