Curl 轉 Java 轉換器

將 curl 命令轉換為 Java 程式碼 - 為 API 請求生成即用型 Java HttpClient 程式碼

隱私聲明: 這款專業工具提供安全轉換為 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());
    }
}

用於 Java API 測試的常見 curl 命令

以下是一些可以轉換為 Java 程式碼的常見 curl 命令:

Java HttpClient 範例

Java 的 HttpClient 庫(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 HttpClient 轉換器r

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 命令,並將其轉換為使用 HttpClient 庫的乾淨、高效的 Java 程式碼

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 程式碼是否處理錯誤檢查?

答:基本生成的程式碼包含用於 IOException 和 InterruptedException 的 try/catch 區塊。對於生產環境的程式碼,您可能需要為不同的 HTTP 狀態碼添加更具體的錯誤處理。

問:如何在 Java 中處理回應?

答:HttpClient 庫提供了幾種用於處理回應的 BodyHandlers。使用 HttpResponse.BodyHandlers.ofString() 處理文字回應,ofInputStream() 處理二進制資料,或 ofByteArray() 處理原始位元組。

問:我需要安裝任何庫才能使用生成的程式碼嗎?

答:不需要外部庫。HttpClient 自 Java 11 起就是 Java 標準庫的一部分。對於 JSON 處理,您可能需要添加像 Jackson 或 Gson 這樣的庫。

問:如何將帶有檔案上傳的 curl 命令轉換為 Java?

答:對於 Java 中的檔案上傳,您需要使用 HttpClient 的多部分表單資料。我們的轉換器處理帶有 -F--form 選項的 curl 命令,並生成適當的 Java 程式碼。

問:如何在 Java HttpClient 中處理 cookie?

答:Java 的 HttpClient 通過 HttpClient.Builder.cookieHandler() 方法提供 cookie 處理。當您轉換包含 cookie 處理的 curl 命令(使用 -b--cookie)時,我們的工具會生成正確管理 cookie 的 Java 程式碼。

問:使用 curl 和 Java HttpClient 進行 API 測試有什麼區別?

答:雖然 curl 非常適合快速命令行 API 測試,但 Java HttpClient 提供了一種程式化方法,可與您的 Java 應用程式整合。將 curl 轉換為 Java 有助於縮小 Java 開發中測試和實現之間的差距。

Java API 測試的 Curl 命令參考

了解 curl 命令對於使用 Java 進行有效的 API 測試至關重要。以下是我們的轉換器支援的常見 curl 選項的快速參考:

基本 curl 語法

curl [options] [URL]

常見 curl 選項

轉換複雜的 curl 命令

我們的 Java 轉換器處理複雜的 curl 命令,包括多個標頭、身份驗證、資料負載和各種選項。只需貼上您的 curl 命令,即可獲得使用 HttpClient 庫的乾淨、現代的 Java 程式碼。

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