مبدل Curl به Java

تبدیل دستورات curl به کد Java - تولید کد Java HttpClient آماده استفاده برای درخواست‌های API

اطلاعیه حریم خصوصی: این ابزار حرفه‌ای تبدیل امن به کد 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();
                
        HttpResponse response = client.send(request, 
                HttpResponse.BodyHandlers.ofString());
                
        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}

دستورات curl رایج برای تست API در Java

در اینجا برخی دستورات curl رایج که می‌توانید به کد Java تبدیل کنید آمده است:

نمونه‌های Java HttpClient

کتابخانه HttpClient در Java (معرفی شده در Java 11) روشی قدرتمند و مدرن برای ارسال درخواست‌های HTTP است. در اینجا برخی الگوهای رایج Java HttpClient آمده است:

آپلود فایل با 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();
                
        HttpResponse response = client.send(request, 
                HttpResponse.BodyHandlers.ofString());
                
        System.out.println(response.body());
    }
}

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.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 {
            HttpResponse response = 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());
        }
    }
}

نحوه استفاده از مبدل Java HttpClientr

۱. استفاده پایه

دستور curl خود را کپی کنید → در کادر ورودی جایگذاری کنید → کد Java HttpClient تبدیل شده را دریافت کنید

۲. ویژگی‌های Java HttpClient

  • HTTP methods (GET, POST, PUT, DELETE, etc.)
  • Request headers in Java format
  • JSON and form data handling
  • Basic and token authentication
  • SSL verification options
  • Session handling with Java HttpClient

۳. استفاده پیشرفته از Java HttpClient

مبدل ما دستورات پیچیده curl را پشتیبانی می‌کند و آنها را به کد Java تمیز و کارآمد با استفاده از کتابخانه HttpClient ترجمه می‌کند

۴. تبدیل گزینه‌های curl به Java

ابزار ما این گزینه‌های رایج curl را پشتیبانی می‌کند و آنها را به کد Java HttpClient مناسب تبدیل می‌کند:

  • -X, --request: Sets the HTTP method (GET, POST, PUT, etc.)
  • -H, --header: Adds HTTP headers to the request
  • -d, --data: Sends data in the request body
  • --data-binary: Sends binary data in the request body
  • -u, --user: Adds basic authentication
  • -k, --insecure: Disables SSL certificate verification
  • --connect-timeout: Sets connection timeout

سؤالات متداول درباره Java HttpClient

س: چه نسخه‌ای از Java برای کد تولید شده مورد نیاز است؟

ج: کد Java HttpClient تولید شده به Java 11 یا بالاتر نیاز دارد. برای نسخه‌های قدیمی‌تر Java، استفاده از کلاینت‌های HTTP جایگزین مانند Apache HttpClient یا OkHttp را در نظر بگیرید.

س: آیا کد Java بررسی خطا را انجام می‌دهد؟

ج: کد پایه تولید شده شامل بلوک‌های try/catch برای IOException و InterruptedException است. برای کد تولیدی، ممکن است بخواهید مدیریت خطای دقیق‌تری برای کدهای وضعیت HTTP مختلف اضافه کنید.

س: چگونه می‌توانم پاسخ را در Java پردازش کنم؟

ج: کتابخانه HttpClient چندین BodyHandler برای پردازش پاسخ‌ها ارائه می‌دهد. از HttpResponse.BodyHandlers.ofString() برای پاسخ‌های متنی، ofInputStream() برای داده‌های باینری، یا ofByteArray() برای بایت‌های خام استفاده کنید.

س: آیا برای استفاده از کد تولید شده نیاز به نصب کتابخانه‌ای دارم؟

ج: هیچ کتابخانه خارجی مورد نیاز نیست. HttpClient از Java 11 بخشی از کتابخانه استاندارد Java است. برای پردازش JSON، ممکن است بخواهید کتابخانه‌ای مانند Jackson یا Gson اضافه کنید.

س: چگونه یک دستور curl با آپلود فایل را به Java تبدیل کنم؟

ج: برای آپلود فایل در Java، باید از داده‌های فرم چندبخشی با HttpClient استفاده کنید. مبدل ما دستورات curl با گزینه‌های -F یا --form را پشتیبانی می‌کند و کد Java مناسب تولید می‌کند.

س: چگونه کوکی‌ها را در Java HttpClient مدیریت کنم؟

ج: HttpClient در Java مدیریت کوکی را از طریق متد HttpClient.Builder.cookieHandler() ارائه می‌دهد. هنگامی که دستورات curl شامل مدیریت کوکی (با استفاده از -b یا --cookie) را تبدیل می‌کنید، ابزار ما کد Java تولید می‌کند که به درستی کوکی‌ها را مدیریت می‌کند.

س: تفاوت بین استفاده از curl و Java HttpClient برای تست API چیست؟

ج: در حالی که curl برای تست سریع API در خط فرمان عالی است، Java HttpClient رویکردی برنامه‌نویسی ارائه می‌دهد که با برنامه‌های Java شما یکپارچه می‌شود. تبدیل curl به Java به پر کردن شکاف بین تست و پیاده‌سازی در توسعه Java کمک می‌کند.

مرجع دستور Curl برای تست API در Java

درک دستورات curl برای تست مؤثر API با Java ضروری است. در اینجا مرجع سریعی از گزینه‌های رایج curl که مبدل ما پشتیبانی می‌کند آمده است:

نحو پایه curl

curl [options] [URL]

گزینه‌های رایج curl

تبدیل دستورات پیچیده curl

مبدل Java ما دستورات پیچیده curl شامل چندین هدر، احراز هویت، داده‌های محتوا و گزینه‌های مختلف را پشتیبانی می‌کند. به سادگی دستور curl خود را جایگذاری کنید و کد Java تمیز و مدرن با استفاده از کتابخانه HttpClient دریافت کنید.

بهترین شیوه‌های Java HttpClient

هنگام کار با کتابخانه Java HttpClient، این بهترین شیوه‌ها را برای تعاملات API کارآمد و امن دنبال کنید:

۱. از نمونه‌های HttpClient مجدداً استفاده کنید

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();
        HttpResponse response1 = 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 {
            HttpResponse response = 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();
    }
}