Μετατροπέας 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

1. Βασική Χρήση

Αντιγράψτε την εντολή curl σας → Επικολλήστε στο πλαίσιο εισαγωγής → Λάβετε μετατρεπόμενο κώδικα Java HttpClient

2. Χαρακτηριστικά 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

3. Προηγμένη Χρήση Java HttpClient

Ο μετατροπέας μας υποστηρίζει σύνθετες εντολές curl και τις μεταφράζει σε καθαρό, αποδοτικό κώδικα Java χρησιμοποιώντας τη βιβλιοθήκη HttpClient

4. Μετατροπή Επιλογών 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 παρέχει διάφορους BodyHandlers για την επεξεργασία αποκρίσεων. Χρησιμοποιήστε HttpResponse.BodyHandlers.ofString() για αποκρίσεις κειμένου, ofInputStream() για δυαδικά δεδομένα, ή ofByteArray() για ακατέργαστα bytes.

Ε: Χρειάζεται να εγκαταστήσω κάποιες βιβλιοθήκες για να χρησιμοποιήσω τον παραγόμενο κώδικα;

Α: Δεν απαιτούνται εξωτερικές βιβλιοθήκες. Το HttpClient είναι μέρος της τυπικής βιβλιοθήκης Java από την Java 11. Για επεξεργασία JSON, ίσως θέλετε να προσθέσετε μια βιβλιοθήκη όπως Jackson ή Gson.

Ε: Πώς μετατρέπω μια εντολή curl με μεταφόρτωση αρχείου σε Java;

Α: Για μεταφορτώσεις αρχείων σε Java, θα χρειαστεί να χρησιμοποιήσετε δεδομένα φόρμας πολλαπλών μερών με HttpClient. Ο μετατροπέας μας χειρίζεται εντολές curl με -F ή --form επιλογές και παράγει τον κατάλληλο κώδικα Java.

Ε: Πώς χειρίζομαι τα cookies σε Java HttpClient;

Α: Το Java HttpClient παρέχει χειρισμό cookies μέσω της μεθόδου HttpClient.Builder.cookieHandler(). Όταν μετατρέπετε εντολές curl που περιλαμβάνουν χειρισμό cookies (χρησιμοποιώντας -b ή --cookie), το εργαλείο μας παράγει κώδικα Java που διαχειρίζεται σωστά τα cookies.

Ε: Ποια είναι η διαφορά μεταξύ της χρήσης 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:

1. Επαναχρησιμοποιήστε Περιπτώσεις 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());
    }
}

2. Υλοποιήστε Σωστό Χειρισμό Σφαλμάτων

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();
        }
    }
}

3. Χρησιμοποιήστε Ασύγχρονα Αιτήματα για Καλύτερη Απόδοση

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();
    }
}