CodeGym/Java Course/मॉड्यूल 3/नया एचटीपी क्लाइंट

नया एचटीपी क्लाइंट

उपलब्ध

1.1 एचटीपी क्लाइंट का परिचय

JDK 11 के साथ शुरुआत करते हुए, जावा प्लेटफॉर्म के डेवलपर्स ने http अनुरोध करने के लिए JDK में एक शक्तिशाली नया टूल जोड़ा, java.net.http. इसमें चार प्रमुख वर्ग शामिल हैं:

  • एचटीपी क्लाइंट
  • एचटीटीपी अनुरोध
  • एचटीटीपी रिस्पांस
  • वेब सॉकेट

HTTPये बहुत शक्तिशाली वर्ग हैं जो आपको , HTTP/2और प्रोटोकॉल का उपयोग करके सभी प्रकार के अनुरोधों को करने की अनुमति देते हैं WebSocket

इसके अलावा, आप इन कक्षाओं का उपयोग सिंक्रोनस और एसिंक्रोनस दोनों http अनुरोध करने के लिए कर सकते हैं।

एचटीटीपी अनुरोध करने में निम्नलिखित भाग होते हैं:

  1. एक वस्तु बनाएँHttpClient
  2. एक वस्तु बनाएँHttpRequest
  3. send()या विधि का उपयोग करके अनुरोध भेजनाsendAsync()
  4. प्रतिक्रिया प्रसंस्करणHttpResponse

ऐसे अनुरोध का एक उदाहरण:

HttpClient client = HttpClient.newBuilder()
        .version(Version.HTTP_1_1)
        .followRedirects(Redirect.NORMAL)
        .connectTimeout(Duration.ofSeconds(20))
        .proxy(ProxySelector.of(new InetSocketAddress("proxy.example.com", 80)))
        .authenticator(Authenticator.getDefault())
        .build();

HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());

1.2 घोषणात्मक दृष्टिकोण

उपरोक्त उदाहरण में, आप कोड लिखने के तथाकथित घोषणात्मक दृष्टिकोण का एक उदाहरण देखते हैं। आइए उदाहरण के पहले भाग पर एक नज़र डालें:

HttpClient client = HttpClient.newBuilder()
.version(Version.HTTP_1_1)
.followRedirects(Redirect.NORMAL)
.connectTimeout(Duration.ofSeconds(20))
.proxy(ProxySelector.of(new InetSocketAddress("proxy.example.com", 80)))
.authenticator(Authenticator.getDefault())
.build();

क्लासिक शैली में लिखा हुआ यह कोड कैसा दिखेगा:

HttpClient client = HttpClient.new();
client.setVersion(Version.HTTP_1_1);
client.setFollowRedirects(Redirect.NORMAL);
client.setConnectTimeout(Duration.ofSeconds(20));
client.setProxy(ProxySelector.of(new InetSocketAddress("proxy.example.com", 80)));
client.setAuthenticator(Authenticator.getDefault());

कोड में घोषणात्मक दृष्टिकोण का उपयोग करते समय, दो चीजें बदल जाती हैं। सबसे पहले , सभी क्लास मेथड्स HttpClient अपना ऑब्जेक्ट रिटर्न करते हैं , जो आपको कोड को चेन के रूप में व्यवस्थित करने की अनुमति देता है।

क्लासिक कोड:
HttpClient client = HttpClient.new();
client.setVersion(Version.HTTP_1_1);
client.setFollowRedirects(Redirect.NORMAL);
client.setConnectTimeout(Duration.ofSeconds(20));
client.setAuthenticator(Authenticator.getDefault());
एक श्रृंखला के रूप में:
HttpClient client = HttpClient.new() .setVersion(Version.HTTP_1_1) .setFollowRedirects(Redirect.NORMAL). setConnectTimeout(Duration.ofSeconds(20)) .setAuthenticator(Authenticator.getDefault());
हम प्रत्येक विधि को एक अलग पंक्ति में स्थानांतरित करते हैं (यह एक लंबा कथन है)
HttpClient client = HttpClient.new()
.setVersion(Version.HTTP_1_1)
.setFollowRedirects(Redirect.NORMAL)
.setConnectTimeout(Duration.ofSeconds(20))
.setAuthenticator(Authenticator.getDefault());

दूसरे , उपसर्ग को विधियों से हटा दिया जाता है set, जो आपको कोड को और भी अधिक कॉम्पैक्ट रूप से लिखने की अनुमति देता है:

था
HttpClient client = HttpClient.new()
.setVersion(Version.HTTP_1_1)
.setFollowRedirects(Redirect.NORMAL)
.setConnectTimeout(Duration.ofSeconds(20))
.setAuthenticator(Authenticator.getDefault());
ये बन गया
HttpClient client = HttpClient.new()
.version(Version.HTTP_1_1)
.followRedirects(Redirect.NORMAL)
.connectTimeout(Duration.ofSeconds(20))
.authenticator(Authenticator.getDefault());

इस तरह के कोड को पढ़ना आसान होता है, हालांकि लिखना कठिन होता है।

और एक और महत्वपूर्ण बात। इस उदाहरण में, बिल्डर पैटर्न का उपयोग किया गया था। ऐसे परिदृश्य हैं जहां ऑब्जेक्ट बनाना एक जटिल प्रक्रिया है। इसलिए, वे इसे औपचारिक बनाना पसंद करते हैं: यह एक सशर्त विधि कॉल से शुरू होता है begin()और एक सशर्त विधि कॉल के साथ समाप्त होता है end()

हमारे द्वारा विश्लेषण किए गए उदाहरण में, विधि HttpClient.newBuilder()एक वस्तु लौटाती है HttpClient.Builder(यह वर्ग की आंतरिक उपयोगिता वर्ग है HttpClient)। प्रकार के सभी तरीकों को version()इस सेवा वस्तु पर ही बुलाया जाता है। ठीक है, विधि की कॉल build()वस्तु के निर्माण के अंत को चिह्नित करती है और वस्तु को वापस करती है HttpClient

टिप्पणियां
  • लोकप्रिय
  • नया
  • पुराना
टिप्पणी लिखने के लिए आपको साइन इन करना होगा
इस पेज पर अभी तक कोई टिप्पणियां नहीं हैं