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