Skip to main content

HTTP Client API

warning

This API is copied from PetarLib for Fabric and may not be fully functional in the Bukkit version. The only changes were made are related to logging.

PetarLib provides a wrapper around Java's HttpClient for simplified asynchronous HTTP requests with retry logic.

Overview​

HttpClientWrapper handles GET and POST requests asynchronously, with automatic retries on failure.

Usage​

Creating a Client​

import com.petarmc.petarlib.net.HttpClientWrapper;

HttpClientWrapper client = new HttpClientWrapper(3); // max 3 retries

GET Request​

CompletableFuture<String> future = client.get("https://api.example.com/data");
future.thenAccept(body -> {
System.out.println("Response: " + body);
}).exceptionally(throwable -> {
System.err.println("Request failed: " + throwable.getMessage());
return null;
});

POST Request​

import java.net.http.HttpRequest;
import java.net.URI;

HttpRequest postRequest = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/post"))
.POST(HttpRequest.BodyPublishers.ofString("{\"key\":\"value\"}"))
.header("Content-Type", "application/json")
.build();

CompletableFuture<String> future = client.post(postRequest);
// Handle response as above

Shutdown​

client.shutdown(); // Call when done to free resources

Features​

  • Asynchronous requests using CompletableFuture.
  • Automatic retries on failure (configurable max retries).
  • Logging of requests and errors.
  • Timeout settings (10s connect, 20s request).