Konverter Curl ke Java

Konversi perintah curl ke kode Java - Hasilkan kode Java HttpClient siap pakai untuk permintaan API

Pemberitahuan Privasi: Alat profesional ini menyediakan konversi aman ke kode Java dengan perlindungan privasi tingkat perusahaan. Kami tidak menyimpan data apa pun yang Anda kirimkan, memastikan kerahasiaan lengkap untuk pekerjaan pengembangan API Anda.

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

Perintah curl Umum untuk Pengujian API Java

Berikut adalah beberapa perintah curl umum yang dapat Anda konversi ke kode Java:

Contoh Java HttpClient

Library Java HttpClient (diperkenalkan di Java 11) adalah cara yang kuat dan modern untuk membuat permintaan HTTP. Berikut adalah beberapa pola Java HttpClient yang umum:

Unggah File dengan 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 dengan Timeout dan Penanganan Kesalahan

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

Cara Menggunakan Konverter Java HttpClientr

1. Penggunaan Dasar

Salin perintah curl Anda → Tempel ke kotak input → Dapatkan kode Java HttpClient yang dikonversi

2. Fitur 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. Penggunaan Java HttpClient Lanjutan

Konverter kami mendukung perintah curl kompleks dan menerjemahkannya ke kode Java yang bersih dan efisien menggunakan library HttpClient

4. Mengkonversi Opsi curl ke Java

Alat kami menangani opsi curl umum ini dan mengkonversinya ke kode Java HttpClient yang sesuai:

  • -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

Pertanyaan Umum tentang Java HttpClient

T: Versi Java apa yang diperlukan untuk kode yang dihasilkan?

J: Kode Java HttpClient yang dihasilkan memerlukan Java 11 atau lebih tinggi. Untuk versi Java yang lebih lama, pertimbangkan untuk menggunakan klien HTTP alternatif seperti Apache HttpClient atau OkHttp.

T: Apakah kode Java menangani pemeriksaan kesalahan?

J: Kode dasar yang dihasilkan mencakup blok try/catch untuk IOException dan InterruptedException. Untuk kode produksi, Anda mungkin ingin menambahkan penanganan kesalahan yang lebih spesifik untuk kode status HTTP yang berbeda.

T: Bagaimana cara memproses respons di Java?

J: Library HttpClient menyediakan beberapa BodyHandlers untuk memproses respons. Gunakan HttpResponse.BodyHandlers.ofString() untuk respons teks, ofInputStream() untuk data biner, atau ofByteArray() untuk byte mentah.

T: Apakah saya perlu menginstal library apa pun untuk menggunakan kode yang dihasilkan?

J: Tidak diperlukan library eksternal. HttpClient adalah bagian dari library standar Java sejak Java 11. Untuk pemrosesan JSON, Anda mungkin ingin menambahkan library seperti Jackson atau Gson.

T: Bagaimana cara mengkonversi perintah curl dengan unggahan file ke Java?

J: Untuk unggahan file di Java, Anda perlu menggunakan data form multipart dengan HttpClient. Konverter kami menangani perintah curl dengan opsi -F atau --form dan menghasilkan kode Java yang sesuai.

T: Bagaimana cara menangani cookie di Java HttpClient?

J: Java HttpClient menyediakan penanganan cookie melalui metode HttpClient.Builder.cookieHandler(). Ketika Anda mengkonversi perintah curl yang menyertakan penanganan cookie (menggunakan -b atau --cookie), alat kami menghasilkan kode Java yang mengelola cookie dengan benar.

T: Apa perbedaan antara menggunakan curl dan Java HttpClient untuk pengujian API?

J: Sementara curl sangat baik untuk pengujian API command-line yang cepat, Java HttpClient menyediakan pendekatan terprogram yang terintegrasi dengan aplikasi Java Anda. Mengkonversi curl ke Java membantu menjembatani kesenjangan antara pengujian dan implementasi dalam pengembangan Java.

Referensi Perintah Curl untuk Pengujian API Java

Memahami perintah curl sangat penting untuk pengujian API yang efektif dengan Java. Berikut adalah referensi cepat opsi curl umum yang didukung konverter kami:

Sintaks curl Dasar

curl [options] [URL]

Opsi curl Umum

Mengkonversi Perintah curl Kompleks

Konverter Java kami menangani perintah curl kompleks termasuk beberapa header, autentikasi, muatan data, dan berbagai opsi. Cukup tempel perintah curl Anda dan dapatkan kode Java yang bersih dan modern menggunakan library HttpClient.

Praktik Terbaik Java HttpClient

Saat bekerja dengan library Java HttpClient, ikuti praktik terbaik ini untuk interaksi API yang efisien dan aman:

1. Gunakan Kembali Instance 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. Implementasikan Penanganan Kesalahan yang Tepat

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. Gunakan Permintaan Asinkron untuk Kinerja yang Lebih Baik

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