अपाचे HttpClient - फॉर्म-आधारित लॉगिन

HttpClient लाइब्रेरी का उपयोग करके आप एक अनुरोध भेज सकते हैं या, मापदंडों को पारित करके एक फॉर्म में लॉगिन कर सकते हैं।

एक फॉर्म में लॉगिन करने के लिए नीचे दिए गए चरणों का पालन करें।

चरण 1 - एक HttpClient ऑब्जेक्ट बनाएँ

createDefault() की विधि HttpClients वर्ग कक्षा की एक वस्तु देता है CloseableHttpClient, जो कि HttpClient इंटरफ़ेस का आधार कार्यान्वयन है। इस विधि का उपयोग करके, एक HttpClient ऑब्जेक्ट बनाएं -

CloseableHttpClient httpClient = HttpClients.createDefault();

चरण 2 - एक RequestBuilder ऑब्जेक्ट बनाएँ

कक्षा RequestBuilderइसका उपयोग मापदंडों को जोड़ने के लिए अनुरोध बनाने के लिए किया जाता है। यदि अनुरोध प्रकार PUT या POST है, तो यह URL एनकोडेड इकाई के रूप में अनुरोध में पैरामीटर जोड़ता है

पोस्ट () विधि का उपयोग करके एक RequestBuilder वस्तु (प्रकार POST) बनाएँ।

//Building the post request object
RequestBuilder reqbuilder = RequestBuilder.post();

चरण 3 - सेट करें उरी और मापदंडों को RequestBuilder।

का उपयोग करके RequestBuilder ऑब्जेक्ट के लिए URI और पैरामीटर सेट करें setUri() तथा addParameter() RequestBuilder वर्ग के तरीके।

//Set URI and parameters
RequestBuilder reqbuilder = reqbuilder.setUri("http://httpbin.org/post");
reqbuilder = reqbuilder1.addParameter("Name", "username").addParameter("password", "password");

चरण 4 - HttpUriRequest ऑब्जेक्ट बनाएँ

आवश्यक पैरामीटर सेट करने के बाद, निर्माण करें HttpUriRequest का उपयोग कर वस्तु build() तरीका।

//Building the HttpUriRequest object
HttpUriRequest httppost = reqbuilder2.build();

चरण 5 - अनुरोध को निष्पादित करें

CloseableHttpClient ऑब्जेक्ट का निष्पादन विधि एक HttpUriRequest (इंटरफ़ेस) ऑब्जेक्ट (यानी HttpGet, HttpPost, HttpPut, HttpHead आदि) को स्वीकार करता है और एक प्रतिक्रिया ऑब्जेक्ट देता है।

पिछले चरणों में बनाए गए HttpUriRequest को निष्पादित करके इसे पास करें execute() तरीका।

//Execute the request
HttpResponse httpresponse = httpclient.execute(httppost);

उदाहरण

निम्न उदाहरण दर्शाता है कि लॉग क्रेडेंशियल भेजकर लॉगऑन कैसे करें। यहाँ, हमने दो पैरामीटर भेजे हैं -username and password एक फॉर्म और संदेश इकाई और अनुरोध की स्थिति को प्रिंट करने का प्रयास किया।

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.net.URISyntaxException;

public class FormLoginExample {
 
   public static void main(String args[]) throws Exception {

      //Creating CloseableHttpClient object
      CloseableHttpClient httpclient = HttpClients.createDefault();
 
      //Creating the RequestBuilder object
      RequestBuilder reqbuilder = RequestBuilder.post();

      //Setting URI and parameters
      RequestBuilder reqbuilder1 = reqbuilder.setUri("http://httpbin.org/post");
      RequestBuilder reqbuilder2 = reqbuilder1.addParameter("Name", 
         "username").addParameter("password", "password");

      //Building the HttpUriRequest object
      HttpUriRequest httppost = reqbuilder2.build();

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

      //Printing the status and the contents of the response
      System.out.println(EntityUtils.toString(httpresponse.getEntity()));
      System.out.println(httpresponse.getStatusLine());
   }
}

उत्पादन

निष्पादित करने पर, उपरोक्त कार्यक्रम निम्नलिखित आउटपुट उत्पन्न करता है -

{
   "args": {},
   "data": "",
   "files": {},
   "form": {
      "Name": "username",
      "password": "password"
   },
   "headers": {
      "Accept-Encoding": "gzip,deflate",
      "Connection": "close",
      "Content-Length": "31",
      "Content-Type": "application/x-www-form-urlencoded; charset = UTF-8",
      "Host": "httpbin.org",
      "User-Agent": "Apache-HttpClient/4.5.6 (Java/1.8.0_91)"
   },
   "json": null,
   "origin": "117.216.245.180",
   "url": "http://httpbin.org/post"
}
HTTP/1.1 200 OK

कुकीज़ से फ़ॉर्म लॉगिन करें

यदि आपका फ़ॉर्म डिफ़ॉल्ट बनाने के बजाय कुकीज़ संग्रहीत करता है CloseableHttpClient वस्तु।

Create a CookieStore object BasicCookieStore वर्ग को तत्काल करके।

//Creating a BasicCookieStore object
BasicCookieStore cookieStore = new BasicCookieStore();

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

//Creating an HttpClientBuilder object
HttpClientBuilder clientbuilder = HttpClients.custom();

Set the cookie store to the client builder setDefaultCookieStore () विधि का उपयोग कर।

//Setting default cookie store to the client builder object
Clientbuilder = clientbuilder.setDefaultCookieStore(cookieStore);

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

//Building the CloseableHttpClient object
CloseableHttpClient httpclient = clientbuilder1.build();

का निर्माण HttpUriRequest अनुरोध को निष्पादित करके ऊपर बताई गई वस्तु।

यदि पृष्ठ कुकीज़ को संग्रहीत करता है, तो आपके द्वारा पास किए गए पैरामीटर कुकी स्टोर में जोड़ दिए जाएंगे।

आप की सामग्री को प्रिंट कर सकते हैं CookieStore ऑब्जेक्ट जहां आप अपने मापदंडों (पिछले वाले मामले में संग्रहीत पृष्ठ के साथ) देख सकते हैं।

कुकीज़ को प्रिंट करने के लिए, सभी कुकीज़ को प्राप्त करें CookieStore का उपयोग कर वस्तु getCookies()तरीका। यह विधि एक लौटाती हैListवस्तु। Iterator का उपयोग करते हुए, सूची की वस्तुओं को नीचे दिखाए अनुसार प्रिंट करें -

//Printing the cookies
List list = cookieStore.getCookies();

System.out.println("list of cookies");
Iterator it = list.iterator();
if(it.hasNext()) {
   System.out.println(it.next());
}