Apache HttpClient - उपयोगकर्ता प्रमाणीकरण

HttpClient का उपयोग करके, आप एक वेबसाइट से जुड़ सकते हैं, जिसे उपयोगकर्ता नाम और पासवर्ड की आवश्यकता है। यह अध्याय बताता है, कि यूजर नेम और पासवर्ड मांगने वाली साइट के खिलाफ क्लाइंट रिक्वेस्ट को कैसे निष्पादित किया जाए।

चरण 1 - एक क्रेडेंशियल्सप्रॉइडर ऑब्जेक्ट बनाएं

CredentialsProviderइंटरफ़ेस उपयोगकर्ता लॉगिन क्रेडेंशियल्स रखने के लिए एक संग्रह रखता है। आप झटपट अपनी वस्तु बना सकते हैंBasicCredentialsProvider वर्ग, इस इंटरफ़ेस का डिफ़ॉल्ट कार्यान्वयन।

CredentialsProvider credentialsPovider = new BasicCredentialsProvider();

चरण 2 - क्रेडेंशियल्स सेट करें

आप क्रेडेंशियलप्रोवाइडर ऑब्जेक्ट का उपयोग करके आवश्यक क्रेडेंशियल्स सेट कर सकते हैं setCredentials() तरीका।

यह विधि नीचे दिए गए अनुसार दो वस्तुओं को स्वीकार करती है -

  • AuthScope object - ऑथेंटिकेशन स्कोप होस्टनाम, पोर्ट नंबर और ऑथेंटिकेशन स्कीम नाम जैसी डिटेल्स को निर्दिष्ट करता है।

  • Credentials object - क्रेडेंशियल (उपयोगकर्ता नाम, पासवर्ड) निर्दिष्ट करना।

का उपयोग कर क्रेडेंशियल्स सेट करें setCredentials() नीचे दिखाए अनुसार मेजबान और प्रॉक्सी दोनों के लिए विधि -

credsProvider.setCredentials(new AuthScope("example.com", 80), 
   new UsernamePasswordCredentials("user", "mypass"));
credsProvider.setCredentials(new AuthScope("localhost", 8000), 
   new UsernamePasswordCredentials("abc", "passwd"));

चरण 3 - एक HttpClientBuilder वस्तु बनाएँ

बनाओ HttpClientBuilder का उपयोग करते हुए custom() की विधि HttpClients कक्षा।

//Creating the HttpClientBuilder
HttpClientBuilder clientbuilder = HttpClients.custom();

चरण 4 - क्रेडेंशियल्सपॉइडर सेट करें

आप HttpClientBuilder का उपयोग करके ऊपर बनाई गई क्रेडेंशियल्सPovider ऑब्जेक्ट सेट कर सकते हैं setDefaultCredentialsProvider() तरीका।

क्लाइंट बिल्डर को पिछले चरण में बनाए गए क्रेडेंशियलप्रॉइडर ऑब्जेक्ट को इसे पास करके सेट करें CredentialsProvider object() नीचे दिखाए अनुसार विधि।

clientbuilder = clientbuilder.setDefaultCredentialsProvider(credsProvider);

चरण 5 - क्लोज़ेबल हेटप्लिएंट बनाएँ

का निर्माण CloseableHttpClient का उपयोग कर वस्तु build() की विधि HttpClientBuilder कक्षा।

CloseableHttpClient httpclient = clientbuilder.build()

चरण 6 - एक HttpGet ऑब्जेक्ट बनाएं और इसे निष्पादित करें

HttpGet क्लास को तत्काल करके HttpRequest ऑब्जेक्ट बनाएँ। इस अनुरोध का उपयोग करके निष्पादित करेंexecute() तरीका।

//Creating a HttpGet object
HttpGet httpget = new HttpGet("https://www.tutorialspoint.com/ ");

//Executing the Get request
HttpResponse httpresponse = httpclient.execute(httpget);

उदाहरण

निम्नलिखित एक उदाहरण कार्यक्रम है जो एक लक्षित साइट के खिलाफ HTTP अनुरोध के निष्पादन को प्रदर्शित करता है जिसके लिए उपयोगकर्ता प्रमाणीकरण की आवश्यकता होती है।

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());
      }
   }
}

उत्पादन

निष्पादित करने पर, उपरोक्त प्रोग्राम निम्न आउटपुट उत्पन्न करता है।

GET
HTTP/1.1 200 OK
200