Penukar Curl kepada Java

Tukar arahan curl kepada kod Java - Jana kod Java HttpClient sedia untuk digunakan untuk permintaan API

Notis Privasi: Alat profesional ini menyediakan penukaran selamat kepada kod Java dengan perlindungan privasi gred perusahaan. Kami tidak menyimpan sebarang data yang anda hantar, memastikan kerahsiaan lengkap untuk kerja pembangunan API anda.

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

Arahan curl Biasa untuk Ujian API Java

Berikut adalah beberapa arahan curl biasa yang boleh anda tukar kepada kod Java:

Contoh Java HttpClient

Pustaka Java HttpClient (diperkenalkan dalam Java 11) adalah cara yang berkuasa dan moden untuk membuat permintaan HTTP. Berikut adalah beberapa corak Java HttpClient yang biasa:

Muat Naik Fail 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 Masa Tamat dan Pengendalian Ralat

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 Penukar Java HttpClientr

1. Penggunaan Asas

Salin arahan curl anda → Tampal ke dalam kotak input → Dapatkan kod Java HttpClient yang ditukar

2. Ciri-ciri 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

Penukar kami menyokong arahan curl kompleks dan menterjemahkannya kepada kod Java yang bersih dan cekap menggunakan pustaka HttpClient

4. Menukar Pilihan curl kepada Java

Alat kami mengendalikan pilihan curl biasa ini dan menukarkannya kepada kod 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

Soalan Lazim tentang Java HttpClient

S: Versi Java apa yang diperlukan untuk kod yang dihasilkan?

J: Kod 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.

S: Adakah kod Java mengendalikan pemeriksaan ralat?

J: Kod asas yang dihasilkan termasuk blok try/catch untuk IOException dan InterruptedException. Untuk kod produksi, anda mungkin ingin menambah pengendalian ralat yang lebih khusus untuk kod status HTTP yang berbeza.

S: Bagaimana saya boleh memproses respons dalam Java?

J: Pustaka HttpClient menyediakan beberapa BodyHandlers untuk memproses respons. Gunakan HttpResponse.BodyHandlers.ofString() untuk respons teks, ofInputStream() untuk data binari, atau ofByteArray() untuk bait mentah.

S: Adakah saya perlu memasang sebarang pustaka untuk menggunakan kod yang dihasilkan?

J: Tiada pustaka luaran diperlukan. HttpClient adalah sebahagian daripada pustaka standard Java sejak Java 11. Untuk pemprosesan JSON, anda mungkin ingin menambah pustaka seperti Jackson atau Gson.

S: Bagaimana saya menukar arahan curl dengan muat naik fail kepada Java?

J: Untuk muat naik fail dalam Java, anda perlu menggunakan data borang multipart dengan HttpClient. Penukar kami mengendalikan arahan curl dengan pilihan -F atau --form dan menjana kod Java yang sesuai.

S: Bagaimana saya mengendalikan kuki dalam Java HttpClient?

J: Java HttpClient menyediakan pengendalian kuki melalui kaedah HttpClient.Builder.cookieHandler(). Apabila anda menukar arahan curl yang termasuk pengendalian kuki (menggunakan -b atau --cookie), alat kami menjana kod Java yang menguruskan kuki dengan betul.

S: Apakah perbezaan antara menggunakan curl dan Java HttpClient untuk ujian API?

J: Walaupun curl sangat baik untuk ujian API baris arahan yang cepat, Java HttpClient menyediakan pendekatan programatik yang berintegrasi dengan aplikasi Java anda. Menukar curl kepada Java membantu merapatkan jurang antara ujian dan pelaksanaan dalam pembangunan Java.

Rujukan Arahan Curl untuk Ujian API Java

Memahami arahan curl adalah penting untuk ujian API yang berkesan dengan Java. Berikut adalah rujukan pantas pilihan curl biasa yang disokong oleh penukar kami:

Sintaks curl Asas

curl [options] [URL]

Pilihan curl Biasa

Menukar Arahan curl Kompleks

Penukar Java kami mengendalikan arahan curl kompleks termasuk pelbagai pengepala, pengesahan, muatan data, dan pelbagai pilihan. Hanya tampal arahan curl anda dan dapatkan kod Java yang bersih dan moden menggunakan pustaka HttpClient.

Amalan Terbaik Java HttpClient

Apabila bekerja dengan pustaka Java HttpClient, ikuti amalan terbaik ini untuk interaksi API yang cekap dan selamat:

1. Gunakan Semula Instans 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. Laksanakan Pengendalian Ralat yang Betul

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 Tak Segerak untuk Prestasi 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();
    }
}