How to Create an HTTP Client in Java Staff
Published: February 2, 2023

Java Programming tutorials

The Internet consists of thousands of web applications that communicate with each other everyday. These applications usually communicate via HTTP (HyperText Transfer Protocol). HTTP is an application layer protocol that enables web applications to transfer data between each other (ie; communicate). HTTP generally follows a client-server architecture. The client initiates the communication with a server by sending an HTTP request. The server then responds with an HTTP response.

In this programming tutorial, developers will learn how to create a simple HTTP Java client to communicate with an HTTP server using the Java programming language.

Read: Top Java Online Training Courses and Bundles

What are HTTP Messages in Java?

In Java, there are two types of HTTP messages: requests and responses.

Java HTTP Requests

HTTP requests generally consist of four parts: a start line, HTTP header, a blank line, and the body. The start line and HTTP header are collectively known as the head.

Start Line

The start line in an HTTP request specifies the HTTP method, request target (URL to be accessed), and the HTTP version to be used during the communication. An HTTP method is a command (such as GET, POST, or HEAD) that defines how your client is going to interact with a given resource on a server.

There are currently two HTTP versions that you can use: 1.1 or 2. The default is HTTP/1.1.

HTTP header (optional)

The HTTP header is a header:value pair which can define certain properties that relate to the client or server. These properties can include things such as the user agent (browser in use), proxy, content type, or connection.

Body (also known as payload)

The body is optional, and it depends on the request type. For example, GET and DELETE request types do not need a body since they are not carrying any payload to the server. The payload is, ideally, a file being transferred.

Java HTTP Response

Java HTTP responses consist of three parts: status line, header, and a body.

  • Status Line: This consists of the HTTP protocol version, status code, and a status text. A status code is a number that describes the success or failure of the request. A status text is a short, human readable message that describes the status of the response.
  • Header: Headers are just like those described in HTTP requests.
  • Body: The body is optional, depending on the message type.

Read: Java Tools to Increase Productivity

How to Use the Java HttpClient Class

Java provides the HttpClient Class, which programmers can use create a client. Here is the syntax for using HttpClient in Java:

HttpClient client = HttpClient.newHttpClient();

In the code example above, the newHttpClient() method allows developers to create an HTTP client with the default configurations.

Next, you need to use the newBuilder() method to build a request. At bare minimum, you need to provide the URI of your requested resource and the request method. The default is GET(). Therefore, if you do not indicate one, GET will be used.

HttpRequest request = HttpRequest.newBuilder()

After creating your request, you need to send it and get a response:

HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());

The code example below shows how programmers can send a request to and then save it in an HTML file using Java and HttpClient:


public class HttpClientApp {

   public static void main(String[] args) throws IOException, InterruptedException {

       HttpClient client = HttpClient.newHttpClient();
       HttpRequest request = HttpRequest.newBuilder()

       HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());

       File fileObj = new File("developer.html");

       FileWriter fileWriterObj = new FileWriter("developer.html");

You can open this file (developer.html) from your browser to see its contents.

Final Thoughts on Java HTTP Clients

The web is filled with many applications that use HTTP protocols. One good example is your web browser (the one you are using to access this site). Your web browser is an HTTP client that communicates with a web server that serves you a webpage. This Java programming tutorial showed how to build your own HTTP client in Java to access the contents of a web page.

Read: The Best Tools for Remote Developers