Convertiți comenzile curl în cod Java - Generați cod Java HttpClient gata de utilizare pentru cereri API
// 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(); HttpResponseresponse = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); } }
Iată câteva comenzi curl comune pe care le puteți converti în cod Java:
curl https://api.example.com/users
curl -X POST -H "Content-Type: application/json" -d '{"name":"John","email":"[email protected]"}' https://api.example.com/users
curl -X PUT -H "Authorization: Bearer token123" -d '{"status":"active"}' https://api.example.com/users/1
curl -X DELETE https://api.example.com/users/1
curl -H "X-API-Key: abc123" -H "Accept: application/json" https://api.example.com/data
Biblioteca Java HttpClient (introdusă în Java 11) este o modalitate puternică și modernă de a face cereri HTTP. Iată câteva modele comune 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(); HttpResponseresponse = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } }
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 { HttpResponseresponse = 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()); } } }
Copiați comanda curl → Lipiți în caseta de introducere → Obțineți cod Java HttpClient convertit
Convertorul nostru suportă comenzi curl complexe și le traduce în cod Java curat și eficient utilizând biblioteca HttpClient
Instrumentul nostru gestionează aceste opțiuni curl comune și le convertește în cod Java HttpClient corespunzător:
R: Codul Java HttpClient generat necesită Java 11 sau o versiune superioară. Pentru versiuni Java mai vechi, luați în considerare utilizarea unor clienți HTTP alternativi precum Apache HttpClient sau OkHttp.
R: Codul de bază generat include blocuri try/catch pentru IOException și InterruptedException. Pentru codul de producție, poate doriți să adăugați o gestionare mai specifică a erorilor pentru diferite coduri de stare HTTP.
R: Biblioteca HttpClient oferă mai mulți BodyHandlers pentru procesarea răspunsurilor. Utilizați HttpResponse.BodyHandlers.ofString() pentru răspunsuri text, ofInputStream() pentru date binare sau ofByteArray() pentru octeți brut.
R: Nu sunt necesare biblioteci externe. HttpClient face parte din biblioteca standard Java începând cu Java 11. Pentru procesarea JSON, poate doriți să adăugați o bibliotecă precum Jackson sau Gson.
R: Pentru încărcări de fișiere în Java, veți avea nevoie de date de formular multipart cu HttpClient. Convertorul nostru gestionează comenzile curl cu opțiuni -F
sau --form
și generează codul Java corespunzător.
R: HttpClient-ul Java oferă gestionarea cookie-urilor prin metoda HttpClient.Builder.cookieHandler(). Când convertiți comenzi curl care includ gestionarea cookie-urilor (folosind -b
sau --cookie
), instrumentul nostru generează cod Java care gestionează corect cookie-urile.
R: În timp ce curl este excelent pentru testarea rapidă a API-urilor din linia de comandă, Java HttpClient oferă o abordare programatică care se integrează cu aplicațiile dvs. Java. Convertirea curl în Java ajută la eliminarea decalajului dintre testare și implementare în dezvoltarea Java.
Înțelegerea comenzilor curl este esențială pentru testarea eficientă a API-urilor cu Java. Iată o referință rapidă a opțiunilor curl comune pe care le suportă convertorul nostru:
curl [options] [URL]
-X, --request METHOD
: Specify request method (GET, POST, PUT, DELETE, etc.)-H, --header LINE
: Add header to the request-d, --data DATA
: Send data in POST request-F, --form CONTENT
: Submit form data-u, --user USER:PASSWORD
: Server user and password-k, --insecure
: Allow insecure server connections-I, --head
: Show document info only-v, --verbose
: Make the operation more verbose-s, --silent
: Silent mode--connect-timeout SECONDS
: Maximum time for connectionConvertorul nostru Java gestionează comenzi curl complexe, inclusiv headere multiple, autentificare, încărcări de date și diverse opțiuni. Pur și simplu lipiți comanda curl și obțineți cod Java curat și modern utilizând biblioteca HttpClient.
Când lucrați cu biblioteca Java HttpClient, urmați aceste bune practici pentru interacțiuni API eficiente și sigure:
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(); HttpResponseresponse1 = 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 { HttpResponseresponse = 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(); } }