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() میتھڈ کے ذریعے کوکی ہینڈلنگ فراہم کرتا ہے۔ جب آپ کوکی ہینڈلنگ (-b
یا --cookie
کا استعمال کرتے ہوئے) والے curl کمانڈز کو تبدیل کرتے ہیں، تو ہمارا ٹول مناسب 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(); } }