curl কমান্ডগুলিকে Java কোডে রূপান্তর করুন - API অনুরোধের জন্য ব্যবহারযোগ্য Java HttpClient কোড তৈরি করুন
// Java HttpClient code will appear here // Example: import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; public class HttpClientExample { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newBuilder() .version(HttpClient.Version.HTTP_2) .connectTimeout(Duration.ofSeconds(10)) .build(); String jsonBody = "{\"name\": \"test\"}"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/data")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(jsonBody)) .build(); HttpResponseresponse = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); } }
এখানে কিছু সাধারণ curl কমান্ড রয়েছে যা আপনি Java কোডে রূপান্তর করতে পারেন:
curl https://api.example.com/users
curl -X POST -H "Content-Type: application/json" -d '{"name":"John","email":"[email protected]"}' https://api.example.com/users
curl -X PUT -H "Authorization: Bearer token123" -d '{"status":"active"}' https://api.example.com/users/1
curl -X DELETE https://api.example.com/users/1
curl -H "X-API-Key: abc123" -H "Accept: application/json" https://api.example.com/data
Java-এর HttpClient লাইব্রেরি (Java 11-এ প্রবর্তিত) HTTP অনুরোধ করার একটি শক্তিশালী এবং আধুনিক উপায়। এখানে কিছু সাধারণ Java HttpClient প্যাটার্ন রয়েছে:
import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class FileUploadExample { public static void main(String[] args) throws IOException, InterruptedException { HttpClient client = HttpClient.newBuilder() .version(HttpClient.Version.HTTP_2) .build(); Path path = Paths.get("document.pdf"); String boundary = "----WebKitFormBoundary" + System.currentTimeMillis(); String contentType = "multipart/form-data; boundary=" + boundary; // Create multipart form data String data = "--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"file\"; filename=\"" + path.getFileName() + "\"\r\n" + "Content-Type: application/pdf\r\n\r\n"; byte[] fileData = Files.readAllBytes(path); byte[] requestBody = new byte[data.getBytes().length + fileData.length + ("\r\n--" + boundary + "--\r\n").getBytes().length]; System.arraycopy(data.getBytes(), 0, requestBody, 0, data.getBytes().length); System.arraycopy(fileData, 0, requestBody, data.getBytes().length, fileData.length); System.arraycopy(("\r\n--" + boundary + "--\r\n").getBytes(), 0, requestBody, data.getBytes().length + fileData.length, ("\r\n--" + boundary + "--\r\n").getBytes().length); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/upload")) .header("Content-Type", contentType) .header("Authorization", "Bearer YOUR_TOKEN_HERE") .POST(HttpRequest.BodyPublishers.ofByteArray(requestBody)) .build(); HttpResponseresponse = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } }
import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; public class ErrorHandlingExample { public static void main(String[] args) { HttpClient client = HttpClient.newBuilder() .version(HttpClient.Version.HTTP_2) .connectTimeout(Duration.ofSeconds(5)) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/data")) .timeout(Duration.ofSeconds(5)) .GET() .build(); try { HttpResponseresponse = client.send(request, HttpResponse.BodyHandlers.ofString()); int statusCode = response.statusCode(); if (statusCode >= 200 && statusCode < 300) { System.out.println("Success: " + response.body()); } else { System.out.println("Error: " + statusCode + " - " + response.body()); } } catch (IOException e) { System.out.println("Connection error: " + e.getMessage()); } catch (InterruptedException e) { System.out.println("Request interrupted: " + e.getMessage()); Thread.currentThread().interrupt(); } catch (Exception e) { System.out.println("Error making request: " + e.getMessage()); } } }
আপনার curl কমান্ড কপি করুন → ইনপুট বক্সে পেস্ট করুন → রূপান্তরিত Java HttpClient কোড পান
আমাদের কনভার্টার জটিল curl কমান্ড সমর্থন করে এবং সেগুলিকে HttpClient লাইব্রেরি ব্যবহার করে পরিষ্কার, দক্ষ Java কোডে অনুবাদ করে
আমাদের টুল এই সাধারণ curl অপশনগুলি পরিচালনা করে এবং সেগুলিকে উপযুক্ত Java HttpClient কোডে রূপান্তর করে:
উত্তর: জেনারেটেড Java HttpClient কোডের জন্য Java 11 বা তার উপরের সংস্করণ প্রয়োজন। পুরানো Java সংস্করণের জন্য, Apache HttpClient বা OkHttp-এর মতো বিকল্প HTTP ক্লায়েন্ট বিবেচনা করুন।
উত্তর: বেসিক জেনারেটেড কোডে IOException এবং InterruptedException-এর জন্য try/catch ব্লক অন্তর্ভুক্ত আছে। প্রোডাকশন কোডের জন্য, আপনি বিভিন্ন HTTP স্ট্যাটাস কোডের জন্য আরও নির্দিষ্ট এরর হ্যান্ডলিং যোগ করতে চাইতে পারেন।
উত্তর: HttpClient লাইব্রেরি রেসপন্স প্রক্রিয়া করার জন্য বেশ কয়েকটি BodyHandlers প্রদান করে। টেক্সট রেসপন্সের জন্য HttpResponse.BodyHandlers.ofString(), বাইনারি ডেটার জন্য ofInputStream(), বা র বাইটের জন্য ofByteArray() ব্যবহার করুন।
উত্তর: কোনো বাহ্যিক লাইব্রেরি প্রয়োজন নেই। HttpClient Java 11 থেকে Java স্ট্যান্ডার্ড লাইব্রেরির অংশ। JSON প্রসেসিং-এর জন্য, আপনি Jackson বা Gson-এর মতো একটি লাইব্রেরি যোগ করতে চাইতে পারেন।
উত্তর: Java-তে ফাইল আপলোডের জন্য, আপনাকে HttpClient-এর সাথে মাল্টিপার্ট ফর্ম ডেটা ব্যবহার করতে হবে। আমাদের কনভার্টার -F
বা --form
অপশন সহ curl কমান্ডগুলি পরিচালনা করে এবং উপযুক্ত Java কোড তৈরি করে।
উত্তর: Java-এর HttpClient HttpClient.Builder.cookieHandler() মেথডের মাধ্যমে কুকি পরিচালনা প্রদান করে। যখন আপনি কুকি পরিচালনা সহ curl কমান্ড রূপান্তর করেন (যেমন -b
বা --cookie
ব্যবহার করে), আমাদের টুল সঠিকভাবে কুকি পরিচালনা করে এমন Java কোড তৈরি করে।
উত্তর: curl দ্রুত কমান্ড-লাইন API পরীক্ষার জন্য চমৎকার হলেও, Java HttpClient আপনার Java অ্যাপ্লিকেশনের সাথে একীভূত হয় এমন একটি প্রোগ্রামাটিক পদ্ধতি প্রদান করে। curl কে Java-তে রূপান্তর করা Java ডেভেলপমেন্টে পরীক্ষা এবং বাস্তবায়নের মধ্যে সেতু তৈরি করতে সাহায্য করে।
Java দিয়ে কার্যকর API পরীক্ষার জন্য curl কমান্ড বোঝা অপরিহার্য। এখানে আমাদের কনভার্টার যে সাধারণ curl অপশনগুলি সমর্থন করে তার একটি দ্রুত রেফারেন্স রয়েছে:
curl [options] [URL]
-X, --request METHOD
: Specify request method (GET, POST, PUT, DELETE, etc.)-H, --header LINE
: Add header to the request-d, --data DATA
: Send data in POST request-F, --form CONTENT
: Submit form data-u, --user USER:PASSWORD
: Server user and password-k, --insecure
: Allow insecure server connections-I, --head
: Show document info only-v, --verbose
: Make the operation more verbose-s, --silent
: Silent mode--connect-timeout SECONDS
: Maximum time for connectionআমাদের Java কনভার্টার একাধিক হেডার, প্রমাণীকরণ, ডেটা পেলোড এবং বিভিন্ন অপশন সহ জটিল curl কমান্ডগুলি পরিচালনা করে। শুধু আপনার curl কমান্ড পেস্ট করুন এবং HttpClient লাইব্রেরি ব্যবহার করে পরিষ্কার, আধুনিক Java কোড পান।
Java HttpClient লাইব্রেরি নিয়ে কাজ করার সময়, দক্ষ এবং নিরাপদ API ইন্টারঅ্যাকশনের জন্য এই সেরা অনুশীলনগুলি অনুসরণ করুন:
import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.URI; public class HttpClientReuseExample { // Create a single HttpClient instance for the application private static final HttpClient httpClient = HttpClient.newBuilder() .version(HttpClient.Version.HTTP_2) .build(); public static void main(String[] args) throws Exception { // First request HttpRequest request1 = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/users")) .GET() .build(); HttpResponseresponse1 = httpClient.send(request1, HttpResponse.BodyHandlers.ofString()); // Second request (uses same client) HttpRequest request2 = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/products")) .GET() .build(); HttpResponse response2 = httpClient.send(request2, HttpResponse.BodyHandlers.ofString()); } }
import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.http.HttpTimeoutException; public class ErrorHandlingBestPractice { public static void main(String[] args) { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/data")) .GET() .build(); try { HttpResponseresponse = client.send(request, HttpResponse.BodyHandlers.ofString()); switch (response.statusCode()) { case 200: case 201: System.out.println("Success: " + response.body()); break; case 400: System.out.println("Bad request: " + response.body()); break; case 401: case 403: System.out.println("Authentication error: " + response.statusCode()); break; case 404: System.out.println("Resource not found"); break; case 500: case 503: System.out.println("Server error: " + response.statusCode()); break; default: System.out.println("Unexpected status: " + response.statusCode()); } } catch (HttpTimeoutException e) { System.out.println("Request timed out: " + e.getMessage()); } catch (IOException e) { System.out.println("Network error: " + e.getMessage()); } catch (InterruptedException e) { System.out.println("Request interrupted"); Thread.currentThread().interrupt(); } } }
import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.concurrent.CompletableFuture; public class AsyncRequestExample { public static void main(String[] args) { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/data")) .GET() .build(); CompletableFuture> futureResponse = client.sendAsync(request, HttpResponse.BodyHandlers.ofString()); futureResponse .thenApply(HttpResponse::body) .thenAccept(System.out::println) .exceptionally(e -> { System.err.println("Error: " + e.getMessage()); return null; }); // Do other work while the request is processing System.out.println("Request sent asynchronously..."); // Wait for the request to complete if needed futureResponse.join(); } }