Hetty-HTTP-Utilities

The motivation for this project was fairly simple: I wanted to learn how HTTP works! More specifically, I wanted to understand all the details. So, I decided to implement the HTTP protocol from scratch using only Java's TCP APIs and the original RFC for HTTP/1.1 .

The goal was to create an API that provides full control over everything included in HTTP packets—without sacrificing ease of use. It also includes common HTTP headers and features. While Java’s official APIs allow you to make HTTP requests, they don’t offer raw access to packet data. I wanted to control every last bit!

Because the project aims to provide completely raw access to packet data, Hetty is structured into multiple layers of abstraction. This allows users to choose exactly how much "low-level" control they need. You can use it as a simple HTTP client or manipulate the raw strings in an HTTP packet if you prefer.

The API supports HTTP/1.0 and 1.1, with all packet parsing and generation implemented internally. Check out the repository for a full list of features. However, due to security concerns and the outdated nature of these HTTP versions, I wouldn't recommend using this API in any official project. After all, it was just a learning experiment to better understand the HTTP protocol.

Etymology

There is a well-known event-driven network application framework for Java called Netty, so I named this project Hetty as a bit of a joke. The HTTP-Utilities part simply specifies the library's purpose.