অ্যাপাচি HTTP ক্লায়েন্টে কাস্টম HttpClient
কনফিগারেশন তৈরি করার মাধ্যমে আপনি আপনার HTTP রিকোয়েস্ট এবং রেসপন্সের নিয়ন্ত্রণ বাড়াতে পারেন। বিভিন্ন ধরনের কনফিগারেশন যেমন টাইমআউট, প্রোক্সি, অটেন্টিকেশন, রিট্রাই হ্যান্ডলার, কনেকশন পুলিং ইত্যাদি কাস্টমাইজ করা যায়। এটি একটি নমনীয় প্রক্রিয়া যা বিভিন্ন ধরনের নেটওয়ার্ক চাহিদা পূরণের জন্য ব্যবহার করা যেতে পারে।
এখানে কিছু সাধারণ কনফিগারেশন বিকল্প প্রদর্শিত হয়েছে, যেমন টাইমআউট, প্রোক্সি, কনেকশন পুলিং, এবং রিট্রাই হ্যান্ডলার কাস্টমাইজেশন।
import org.apache.http.HttpHost;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.HttpResponse;
import org.apache.http.impl.client.HttpClientBuilder;
public class CustomHttpClientExample {
public static void main(String[] args) {
try {
// RequestConfig তৈরি করা (কানেকশন টাইমআউট, সোকেট টাইমআউট)
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000) // কানেকশন টাইমআউট
.setSocketTimeout(5000) // সোকেট টাইমআউট
.build();
// PoolingHttpClientConnectionManager তৈরি করা (কনেকশন পুলিং)
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(200); // সর্বোচ্চ কানেকশন সংখ্যা
connectionManager.setDefaultMaxPerRoute(20); // প্রতি রুটে সর্বোচ্চ কানেকশন সংখ্যা
// প্রোক্সি কনফিগারেশন (যদি প্রয়োজন হয়)
HttpHost proxy = new HttpHost("proxy.example.com", 8080);
requestConfig = RequestConfig.custom()
.setProxy(proxy)
.setConnectTimeout(5000)
.setSocketTimeout(5000)
.build();
// HttpClient তৈরি এবং কাস্টম কনফিগারেশন সেট করা
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig) // কনফিগারেশন যোগ করা
.setConnectionManager(connectionManager) // কানেকশন ম্যানেজার
.setRetryHandler(new DefaultHttpRequestRetryHandler(3, true)) // রিট্রাই হ্যান্ডলার
.build();
// HTTP GET রিকোয়েস্ট তৈরি
HttpGet httpGet = new HttpGet("http://example.com");
HttpResponse response = httpClient.execute(httpGet);
// রেসপন্স স্ট্যাটাস দেখানো
System.out.println("Response Status: " + response.getStatusLine().getStatusCode());
} catch (Exception e) {
e.printStackTrace();
}
}
}
যদি আপনি অতিরিক্ত কিছু কাস্টম সেটিংস যেমন SSL কনফিগারেশন, কাস্টম হেডার অথবা অটেন্টিকেশন অন্তর্ভুক্ত করতে চান, তাহলে তা নিম্নলিখিতভাবে করা যায়:
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.HttpResponse;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.impl.client.BasicCredentialsProvider;
public class CustomHttpClientWithAuth {
public static void main(String[] args) {
try {
// Basic Authentication প্রোভাইডার তৈরি
BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(
new org.apache.http.auth.AuthScope("example.com", 80),
new UsernamePasswordCredentials("user", "password"));
// HttpClient তৈরি এবং Basic Authentication কনফিগার করা
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCredentialsProvider(credentialsProvider) // অটেন্টিকেশন প্রদানকারী
.build();
// HTTP GET রিকোয়েস্ট তৈরি
HttpGet httpGet = new HttpGet("http://example.com");
HttpResponse response = httpClient.execute(httpGet);
// রেসপন্স স্ট্যাটাস দেখানো
System.out.println("Response Status: " + response.getStatusLine().getStatusCode());
} catch (Exception e) {
e.printStackTrace();
}
}
}
কাস্টম HttpClient
কনফিগারেশন তৈরি করে, আপনি HTTP রিকোয়েস্ট এবং রেসপন্সের জন্য একটি শক্তিশালী এবং নিরাপদ পরিবেশ তৈরি করতে পারেন। টাইমআউট, প্রোক্সি, কানেকশন পুলিং, অটেন্টিকেশন এবং রিট্রাই পলিসির মতো বিভিন্ন সেটিংস কাস্টমাইজ করা সম্ভব। এর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনটি আরও নিয়ন্ত্রণযোগ্য এবং নিরাপদ করতে পারেন।