A comprehensive Java utility library providing static method wrappers for common operations to reduce API learning costs and improve development efficiency
—
Comprehensive HTTP client utilities through the HttpUtil class, providing simple methods for HTTP requests, file downloads, and server creation based on HttpURLConnection.
import cn.hutool.http.HttpUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.Method;// Simple GET request
public static String get(String urlString);
public static String get(String urlString, Charset charset);
// GET with parameters
public static String get(String urlString, Map<String, Object> paramMap);
public static String get(String urlString, Map<String, Object> paramMap, int timeout);// Simple POST request
public static String post(String urlString, String body);
public static String post(String urlString, Map<String, Object> paramMap);
// POST with custom content type
public static String post(String urlString, String body, String contentType);// PUT requests
public static String put(String urlString, String body);
public static String put(String urlString, Map<String, Object> paramMap);
// DELETE requests
public static String delete(String urlString);
public static String delete(String urlString, Map<String, Object> paramMap);
// HEAD requests
public static String head(String urlString);
// PATCH requests
public static String patch(String urlString, String body);// Execute custom request
public static HttpResponse execute(HttpRequest request);
// Execute with specific method
public static HttpResponse execute(Method method, String url);
public static HttpResponse execute(Method method, String url, Map<String, Object> paramMap);// Create request builders
public static HttpRequest createGet(String url);
public static HttpRequest createPost(String url);
public static HttpRequest createPut(String url);
public static HttpRequest createDelete(String url);
public static HttpRequest createPatch(String url);
public static HttpRequest createHead(String url);
public static HttpRequest createOptions(String url);
public static HttpRequest createTrace(String url);
// Create request with custom method
public static HttpRequest createRequest(Method method, String url);Usage Examples:
// Simple requests
String response = HttpUtil.get("https://api.example.com/users");
String result = HttpUtil.post("https://api.example.com/login",
MapUtil.of("username", "admin", "password", "123456"));
// Advanced request building
HttpResponse response = HttpUtil.createPost("https://api.example.com/data")
.header("Content-Type", "application/json")
.header("Authorization", "Bearer token123")
.body("{\"name\":\"test\",\"value\":123}")
.timeout(5000)
.execute();
String responseBody = response.body();
int statusCode = response.getStatus();// Download file to local path
public static long downloadFile(String url, String destFilePath);
public static long downloadFile(String url, File destFile);
// Download with progress monitoring
public static long downloadFile(String url, File destFile, StreamProgress streamProgress);
public static long downloadFile(String url, File destFile, int timeout,
StreamProgress streamProgress);// Upload file via POST
public static String post(String urlString, Map<String, Object> paramMap, File... files);
public static String post(String urlString, Map<String, Object> paramMap,
Map<String, File> fileMap);Usage Examples:
// Download file
long size = HttpUtil.downloadFile("https://example.com/file.zip", "local-file.zip");
// Upload file
Map<String, Object> params = MapUtil.of("description", "My file");
File file = new File("upload.txt");
String result = HttpUtil.post("https://api.example.com/upload", params, file);
// Multiple file upload
Map<String, File> fileMap = MapUtil.of(
"file1", new File("doc1.pdf"),
"file2", new File("doc2.pdf")
);
String result = HttpUtil.post("https://api.example.com/batch-upload", null, fileMap);// URL validation
public static boolean isHttp(String url);
public static boolean isHttps(String url);
// URL encoding/decoding
public static String encode(String url, Charset charset);
public static String decode(String url, Charset charset);
public static String encodeParams(Map<String, Object> paramMap, Charset charset);// Build query string from parameters
public static String toParams(Map<String, Object> paramMap);
public static String toParams(Map<String, Object> paramMap, Charset charset);
// Parse query string
public static Map<String, String> decodeParamMap(String query, Charset charset);Fluent API for building HTTP requests:
public class HttpRequest {
// Request configuration
public HttpRequest method(Method method);
public HttpRequest url(String url);
// Headers
public HttpRequest header(String name, String value);
public HttpRequest headerMap(Map<String, String> headerMap, boolean isOverride);
public HttpRequest contentType(String contentType);
public HttpRequest userAgent(String userAgent);
// Authentication
public HttpRequest basicAuth(String username, String password);
public HttpRequest bearerAuth(String token);
// Request body
public HttpRequest body(String body);
public HttpRequest body(byte[] bodyBytes);
public HttpRequest form(Map<String, Object> formMap);
public HttpRequest form(String name, Object value);
// Parameters
public HttpRequest query(String name, Object value);
public HttpRequest query(Map<String, Object> queryMap);
// Timeouts and configuration
public HttpRequest timeout(int milliseconds);
public HttpRequest connectionTimeout(int milliseconds);
public HttpRequest readTimeout(int milliseconds);
// Cookies
public HttpRequest cookie(String name, String value);
public HttpRequest cookie(Cookie cookie);
// Redirects and SSL
public HttpRequest followRedirects(boolean followRedirects);
public HttpRequest disableSslValidation();
// Execution
public HttpResponse execute();
public String executeAsync();
}Response handling and data extraction:
public class HttpResponse {
// Status
public int getStatus();
public boolean isOk();
public boolean isRedirected();
// Headers
public String header(String name);
public Map<String, List<String>> headers();
public String contentType();
public Charset charset();
public long contentLength();
// Body content
public String body();
public String body(Charset charset);
public byte[] bodyBytes();
public InputStream bodyStream();
// Cookies
public List<HttpCookie> getCookies();
public String getCookie(String name);
// Utilities
public File writeBodyToFile(File targetFile);
public void close();
}Usage Examples:
// Complex request with authentication and custom headers
HttpResponse response = HttpUtil.createPost("https://api.example.com/secure-endpoint")
.bearerAuth("your-jwt-token")
.header("X-API-Version", "v2")
.contentType("application/json")
.body("{\"action\":\"process\",\"data\":[1,2,3]}")
.timeout(10000)
.execute();
// Handle response
if (response.isOk()) {
String result = response.body();
String contentType = response.contentType();
System.out.println("Success: " + result);
} else {
System.err.println("Error: " + response.getStatus());
}// Enable global cookie management
public static void setGlobalCookieManager(CookieManager cookieManager);
public static CookieManager getGlobalCookieManager();// Create simple HTTP server
public static SimpleServer createServer(int port);
public static SimpleServer createServer(int port, String root);Usage Example:
// Create and start simple HTTP server
SimpleServer server = HttpUtil.createServer(8080, "/var/www/html");
server.start();public enum Method {
GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE, CONNECT, PATCH
}// Common content types
public static final String CONTENT_TYPE_JSON = "application/json";
public static final String CONTENT_TYPE_XML = "application/xml";
public static final String CONTENT_TYPE_FORM_URLENCODED = "application/x-www-form-urlencoded";
public static final String CONTENT_TYPE_MULTIPART = "multipart/form-data";
public static final String CONTENT_TYPE_TEXT = "text/plain";
public static final String CONTENT_TYPE_HTML = "text/html";Common status codes are available as constants in the response handling. The HTTP utilities automatically handle redirects, cookies, and common error conditions, making it easy to work with REST APIs and web services without external dependencies.
Install with Tessl CLI
npx tessl i tessl/maven-cn-hutool--hutool-all