Multi-part Request একটি HTTP অনুরোধের ধরন, যা বিশেষ করে ফাইল আপলোড বা বিভিন্ন ধরনের ডেটা একসঙ্গে সার্ভারে পাঠানোর জন্য ব্যবহৃত হয়। সাধারণত, এই ধরনের অনুরোধে Content-Type: multipart/form-data হেডার থাকে, যা সার্ভারকে জানায় যে অনুরোধের মধ্যে একাধিক অংশ রয়েছে, যেমন ফাইল, টেক্সট ডেটা বা অন্যান্য ফর্ম ফিল্ড।
Apache HTTP Client-এ Multi-part Request পাঠানোর জন্য আমরা HttpPost
এবং MultipartEntityBuilder
ব্যবহার করে একটি অনুরোধ তৈরি করতে পারি। এই অনুরোধের মধ্যে আমরা একাধিক ফর্ম ডেটা বা ফাইল পাঠাতে পারি।
Multi-part request সাধারণত ফর্ম ডেটা বা ফাইল আপলোড করার জন্য ব্যবহৃত হয়। প্রতিটি অংশের মধ্যে আলাদা আলাদা Content-Disposition থাকে, যা পরিষ্কার করে যে কোন অংশটি ফাইল, কোন অংশটি টেক্সট ফিল্ড বা অন্য কিছু।
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.util.EntityUtils;
import java.io.File;
public class ApacheHttpClientMultiPartRequest {
public static void main(String[] args) {
// HttpClient তৈরি করুন
CloseableHttpClient httpClient = HttpClients.createDefault();
try {
// HttpPost তৈরি করুন
HttpPost httpPost = new HttpPost("https://example.com/upload");
// MultipartEntityBuilder ব্যবহার করে multipart request তৈরি করুন
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
// ফর্ম ডেটা যোগ করুন (String Data)
builder.addPart("username", new StringBody("testuser"));
// ফাইল যোগ করুন (File Upload)
File file = new File("path/to/your/file.jpg");
builder.addPart("file", new FileBody(file));
// তৈরি করা MultipartEntity কে HttpPost এর মধ্যে সেট করুন
HttpEntity multipart = builder.build();
httpPost.setEntity(multipart);
// POST অনুরোধ পাঠান এবং প্রতিক্রিয়া সংগ্রহ করুন
CloseableHttpResponse response = httpClient.execute(httpPost);
try {
// প্রতিক্রিয়া স্ট্যাটাস কোড পড়ুন
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("Response Status Code: " + statusCode);
// HttpEntity থেকে ডেটা পড়ুন
HttpEntity entity = response.getEntity();
if (entity != null) {
String responseBody = EntityUtils.toString(entity);
System.out.println("Response Content: " + responseBody);
}
} finally {
response.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// HttpClient বন্ধ করুন
httpClient.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
HttpClient তৈরি করা
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpClients.createDefault()
ব্যবহার করে একটি HttpClient
অবজেক্ট তৈরি করা হয়েছে।HttpPost তৈরি করা
HttpPost httpPost = new HttpPost("https://example.com/upload");
HttpPost
অবজেক্ট তৈরি করা হয়েছে এবং এতে URL সেট করা হয়েছে যেখানে আমরা ফাইল এবং ফর্ম ডেটা পাঠাব।MultipartEntityBuilder ব্যবহার করা
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
MultipartEntityBuilder
ব্যবহার করা হয়েছে, যা বিভিন্ন ধরনের ফর্ম ডেটা এবং ফাইল একসাথে তৈরি করতে সাহায্য করে।ফর্ম ডেটা এবং ফাইল যোগ করা
builder.addPart("username", new StringBody("testuser"));
File file = new File("path/to/your/file.jpg");
builder.addPart("file", new FileBody(file));
username
) যোগ করা হয়েছে।file.jpg
) যোগ করা হয়েছে।MultipartEntity তৈরি করা
HttpEntity multipart = builder.build();
httpPost.setEntity(multipart);
MultipartEntityBuilder
থেকে HttpEntity
তৈরি করা হয়েছে, যা HttpPost
অনুরোধে সেট করা হয়েছে।httpClient.execute(httpPost)
ব্যবহার করে GET অনুরোধ পাঠানো হয়েছে এবং প্রতিক্রিয়া (HttpResponse
) প্রাপ্ত হয়েছে।EntityUtils.toString()
ব্যবহার করে প্রতিক্রিয়া বডি পড়া হয়েছে।Apache HTTP Client-এ Multi-part Request ব্যবহারের মাধ্যমে ফাইল এবং টেক্সট ডেটা একসাথে সার্ভারে পাঠানো সম্ভব। MultipartEntityBuilder
ব্যবহার করে, একাধিক ফর্ম ফিল্ড এবং ফাইল পাঠানোর জন্য সহজেই HttpPost
অনুরোধ তৈরি করা যায়। এটি সাধারণত ফাইল আপলোড এবং ফর্ম ডেটা পাঠানোর ক্ষেত্রে ব্যবহৃত হয়।
common.read_more