1.1 HttpClient-এর পরিচিতি
JDK 11 দিয়ে শুরু করে, জাভা প্ল্যাটফর্মের বিকাশকারীরা http অনুরোধ করার জন্য JDK-তে একটি শক্তিশালী নতুন টুল যুক্ত করেছে, java.net.http
. এটিতে চারটি মূল শ্রেণী রয়েছে:
- Http ক্লায়েন্ট
- Http অনুরোধ
- Http প্রতিক্রিয়া
- ওয়েব সকেট
এগুলি অত্যন্ত শক্তিশালী ক্লাস যা আপনাকে HTTP
, HTTP/2
এবং ব্যবহার করে সমস্ত সম্ভাব্য ধরণের অনুরোধ সম্পাদন করতে দেয় WebSocket
৷
উপরন্তু, আপনি সিঙ্ক্রোনাস এবং অ্যাসিঙ্ক্রোনাস HTTP অনুরোধ উভয় করতে এই ক্লাসগুলি ব্যবহার করতে পারেন।
একটি http অনুরোধ করা নিম্নলিখিত অংশগুলি নিয়ে গঠিত:
- একটি বস্তু তৈরি করুন
HttpClient
- একটি বস্তু তৈরি করুন
HttpRequest
send()
বা পদ্ধতি ব্যবহার করে একটি অনুরোধ পাঠানোsendAsync()
- প্রতিক্রিয়া প্রক্রিয়াকরণ
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
তাদের নিজস্ব বস্তু ফেরত দেয় , যা আপনাকে চেইন আকারে কোড সংগঠিত করতে দেয়।
ক্লাসিক কোড: |
---|
|
একটি চেইন হিসাবে: |
|
আমরা প্রতিটি পদ্ধতিকে একটি পৃথক লাইনে স্থানান্তর করি (এটি একটি দীর্ঘ বিবৃতি) |
|
দ্বিতীয়ত , উপসর্গটি পদ্ধতিগুলি থেকে সরানো হয়েছে set
, যা আপনাকে আরও কম্প্যাক্টলি কোড লিখতে দেয়:
ছিল |
---|
|
এটা হয়ে ওঠে |
|
এই ধরনের কোড পড়া সহজ, যদিও লেখা কঠিন।
এবং আরও একটি গুরুত্বপূর্ণ পয়েন্ট। এই উদাহরণে, বিল্ডার প্যাটার্ন ব্যবহার করা হয়েছিল। এমন পরিস্থিতি রয়েছে যেখানে একটি বস্তু তৈরি করা একটি জটিল প্রক্রিয়া। অতএব, তারা এটিকে আনুষ্ঠানিক করতে পছন্দ করে: এটি একটি শর্তসাপেক্ষ পদ্ধতি কল দিয়ে শুরু হয় begin()
এবং একটি শর্তাধীন পদ্ধতি কল দিয়ে শেষ হয় end()
।
আমরা যে উদাহরণটি বিশ্লেষণ করেছি, পদ্ধতিটি HttpClient.newBuilder()
একটি বস্তু প্রদান করে HttpClient.Builder
(এটি ক্লাসের একটি অভ্যন্তরীণ ইউটিলিটি ক্লাস HttpClient
)। ধরনের সমস্ত পদ্ধতি version()
শুধুমাত্র এই পরিষেবা বস্তুর উপর বলা হয়. ঠিক আছে, পদ্ধতির কলটি build()
বস্তুর নির্মাণের শেষ চিহ্নিত করে এবং বস্তুটিকে ফেরত দেয় HttpClient
।
GO TO FULL VERSION