ShortyyDocs

Java 11+ HttpClient Integration

Modern Java integration using java.net.http.HttpClient and Jackson ObjectMapper for enterprise backend services.

Java 11+ HttpClient Integration

Use Java's modern java.net.http.HttpClient to interact with Shortyy without external heavyweight HTTP libraries.


Java 11+ Implementation

java
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 ShortyyService {
    private static final String API_KEY = System.getenv("SHORTYY_API_KEY");
    private static final String BASE_URL = "https://api.shortyy.com/v1";

    private final HttpClient httpClient = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

    public String createShortLink(String destinationUrl, String expiresIn) throws Exception {
        String jsonPayload = String.format("{"url":"%s","expires_in":"%s"}", destinationUrl, expiresIn);

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(BASE_URL + "/links"))
                .header("Authorization", "Bearer " + API_KEY)
                .header("Content-Type", "application/json")
                .header("Accept", "application/json")
                .POST(HttpRequest.BodyPublishers.ofString(jsonPayload))
                .build();

        HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());

        if (response.statusCode() == 429) {
            throw new RuntimeException("Rate limit exceeded on Shortyy. Check Retry-After header.");
        }

        if (response.statusCode() != 201) {
            throw new RuntimeException("API error " + response.statusCode() + ": " + response.body());
        }

        return response.body();
    }
}