CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-squareup-okhttp--okhttp

An HTTP & SPDY client for Android and Java applications with efficient connection pooling, interceptors, and modern protocol support

Pending
Overview
Eval results
Files

http-utilities.mddocs/

HTTP Utilities

URL handling, header management, media type parsing, and HTTP protocol utilities.

Capabilities

HttpUrl

HTTP/HTTPS URL with parsing, encoding, and building capabilities.

public final class HttpUrl {
    public static HttpUrl parse(String url);
    public static HttpUrl get(URL url);
    public static HttpUrl get(URI uri);
    public static int defaultPort(String scheme);
    public URL url();
    public URI uri();
    public String scheme();
    public boolean isHttps();
    public String host();
    public int port();
    public String encodedPath();
    public List<String> pathSegments();
    public String encodedQuery();
    public String query();
    public String queryParameter(String name);
    public List<String> queryParameterValues(String name);
    public Set<String> queryParameterNames();
    public String encodedFragment();
    public String fragment();
    public String redact();
    public HttpUrl resolve(String link);
    public Builder newBuilder();
    public Builder newBuilder(String link);
    
    public static final class Builder {
        public Builder();
        public Builder scheme(String scheme);
        public Builder username(String username);
        public Builder password(String password);
        public Builder host(String host);
        public Builder port(int port);
        public Builder addPathSegment(String pathSegment);
        public Builder addEncodedPathSegment(String encodedPathSegment);
        public Builder setPathSegment(int index, String pathSegment);
        public Builder setEncodedPathSegment(int index, String encodedPathSegment);
        public Builder removePathSegment(int index);
        public Builder encodedPath(String encodedPath);
        public Builder query(String query);
        public Builder encodedQuery(String encodedQuery);
        public Builder addQueryParameter(String name, String value);
        public Builder addEncodedQueryParameter(String name, String value);
        public Builder setQueryParameter(String name, String value);
        public Builder setEncodedQueryParameter(String name, String value);
        public Builder removeAllQueryParameters(String name);
        public Builder fragment(String fragment);
        public Builder encodedFragment(String encodedFragment);
        public HttpUrl build();
    }
}

Usage Examples:

// Parse and build URLs
HttpUrl url = HttpUrl.parse("https://api.example.com/users");
HttpUrl newUrl = url.newBuilder()
    .addQueryParameter("page", "2")
    .addQueryParameter("limit", "50")
    .build();

// Build URL from scratch
HttpUrl builtUrl = new HttpUrl.Builder()
    .scheme("https")
    .host("api.example.com")
    .addPathSegment("v1")
    .addPathSegment("users")
    .addQueryParameter("active", "true")
    .fragment("top")
    .build();

// URL manipulation
HttpUrl baseUrl = HttpUrl.parse("https://example.com/api");
HttpUrl resolvedUrl = baseUrl.resolve("../v2/users?sort=name");

// Access URL components
String scheme = url.scheme();        // "https"
String host = url.host();           // "api.example.com"
int port = url.port();              // 443 (default HTTPS port)
List<String> segments = url.pathSegments(); // ["users"]
String queryParam = url.queryParameter("page"); // "2"

URL Building

Construct URLs programmatically with the HttpUrl.Builder.

/**
 * Builder for constructing HttpUrl instances.
 */
public static final class Builder {
    public Builder();
    public Builder scheme(String scheme);
    public Builder username(String username);
    public Builder password(String password);
    public Builder host(String host);
    public Builder port(int port);
    public Builder addPathSegment(String pathSegment);
    public Builder addEncodedPathSegment(String encodedPathSegment);
    public Builder setPathSegment(int index, String pathSegment);
    public Builder setEncodedPathSegment(int index, String encodedPathSegment);
    public Builder removePathSegment(int index);
    public Builder encodedPath(String encodedPath);
    public Builder query(String query);
    public Builder encodedQuery(String encodedQuery);
    public Builder addQueryParameter(String name, String value);
    public Builder addEncodedQueryParameter(String name, String value);
    public Builder setQueryParameter(String name, String value);
    public Builder setEncodedQueryParameter(String name, String value);
    public Builder removeAllQueryParameters(String name);
    public Builder fragment(String fragment);
    public Builder encodedFragment(String encodedFragment);
    public HttpUrl build();
}

Usage Examples:

// Complex URL building
HttpUrl complexUrl = new HttpUrl.Builder()
    .scheme("https")
    .username("user")
    .password("pass")
    .host("secure.api.example.com")
    .port(8443)
    .addPathSegment("api")
    .addPathSegment("v2")
    .addPathSegment("search")
    .addQueryParameter("q", "java http client")
    .addQueryParameter("limit", "10")
    .addQueryParameter("sort", "relevance")
    .fragment("results")
    .build();

// Dynamic query building
HttpUrl.Builder builder = HttpUrl.parse("https://api.example.com/search").newBuilder();
Map<String, String> filters = getSearchFilters();
for (Map.Entry<String, String> filter : filters.entrySet()) {
    builder.addQueryParameter(filter.getKey(), filter.getValue());
}
HttpUrl searchUrl = builder.build();

// Path manipulation
HttpUrl apiUrl = new HttpUrl.Builder()
    .scheme("https")
    .host("api.example.com")
    .addPathSegment("users")
    .addPathSegment("123")
    .addPathSegment("profile")
    .build(); // https://api.example.com/users/123/profile

Headers

Immutable HTTP headers collection with case-insensitive name matching.

public final class Headers {
    public static Headers of(String... namesAndValues);
    public static Headers of(Map<String, String> headers);
    public String get(String name);
    public Date getDate(String name);
    public int size();
    public String name(int index);
    public String value(int index);
    public Set<String> names();
    public List<String> values(String name);
    public Builder newBuilder();
    public Map<String, List<String>> toMultimap();
}

MediaType

RFC 2045 Media Type for HTTP content with parsing capabilities.

public final class MediaType {
    public static MediaType parse(String string);
    public String type();
    public String subtype();
    public Charset charset();
    public Charset charset(Charset defaultValue);
}

Usage Examples:

// Work with headers
Headers headers = new Headers.Builder()
    .add("Content-Type", "application/json")
    .add("Authorization", "Bearer token")
    .build();

// Access header values
String contentType = headers.get("Content-Type");
List<String> acceptValues = headers.values("Accept");
Set<String> headerNames = headers.names();

// Convert to map
Map<String, List<String>> headerMap = headers.toMultimap();

// Parse media types
MediaType json = MediaType.parse("application/json; charset=utf-8");
Charset charset = json.charset(); // UTF-8

// Media type operations
MediaType plainText = MediaType.parse("text/plain");
String type = plainText.type();        // "text"
String subtype = plainText.subtype();  // "plain"

Credentials

Utility class for creating HTTP authentication credentials.

public final class Credentials {
    public static String basic(String userName, String password);
}

Usage Examples:

// Basic authentication
String authHeader = Credentials.basic("user123", "secretpass");
Request request = new Request.Builder()
    .url("https://api.example.com/protected")
    .header("Authorization", authHeader)
    .build();

// Use with interceptor
client.interceptors().add(new Interceptor() {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request original = chain.request();
        Request authenticated = original.newBuilder()
            .header("Authorization", Credentials.basic("username", "password"))
            .build();
        return chain.proceed(authenticated);
    }
});

Install with Tessl CLI

npx tessl i tessl/maven-com-squareup-okhttp--okhttp

docs

async-execution.md

authentication-security.md

caching.md

connection-management.md

form-data-multipart.md

http-client.md

http-utilities.md

index.md

interceptors.md

request-building.md

request-response-bodies.md

response-handling.md

tile.json