java.net.URLConnection in Java is used for handling HTTP requests in Java. With this class, you can send HTTP requests, manage connections, and also process responses, without using the external libraries
Whether you’re new to HTTP in Java, or looking for an efficient solution to handle HTTP requests, we’ll guide you in using URLConnection to make HTTP requests, handle responses, and manage connections.
Table of Contents:
What is URLConnection in Java?
The URLConnection in Java is used to connect to the Internet. It is an abstract class that allows Java applications to talk to a resource or to read the data from a URL. It acts as a bridge between your Java code and the Internet.
In this abstract class, we can connect to a website, download data like HTML or files, and send data to a server.
Features of the URLConnection class
- It is an abstract class and provides communication between the Java program and a URL resource.
- It has 2 main subclasses
- HttpURLConnection: For handling HTTP connections.
- JarURLConnection: For accessing JAR file resources.
- It supports different protocols like FTP and file URLs.
- It can read and write a resource.
Steps to Establish a URL Connection in Java
To establish a connection using URLConnection in Java, follow these steps:
1. Create a URL Object
Define the URL of the resource you want to connect to.
URL url = new URL("https://jsonplaceholder.typicode.com/posts/1");
2. Open a Connection
Use the openConnection() method to get a URLConnection object.
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
3. Establish the Connection
Use connect() to start the connection
conn.connect();
4. Read Data from the Server
Use an InputStream to read the response from the server. If sending data, use an OutputStream.
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
5. Close the Connection
If using streams, always close the connection to free up the resources.
reader.close();
conn.disconnect();
Master Java Today - Accelerate Your Future
Enroll Now and Transform Your Future
What is HttpURLConnection?
The HttpURLConnection is a Java class used to communicate between an application and a URL. It is used to read and write data.
It has two components:
1. Client-Side / Request
Sends a request to the server using HTTP methods like GET and POST. The request from the client is sent to the server. It uses methods like GET, POST, etc, and sends the data to the server side.
2. Server Side / Response
The request is sent by the client and received by the server, and according to that, the response is sent back to the client.
Making an HTTP GET Request (Firing a Request)
The GET method is used to retrieve the data from the server. They do not send any optional data with the request body. During GET requests, multiple requests to the same URL can return the same result as long as the data remains unchanged on the server.
Example:
Output:
Explanation: In the above Java program, the data is obtained from an API. It first defines the URL and opens an HTTP connection. The request method is set to “GET”, due to which no additional data will be sent in the request body. The program sets connection timeouts and checks the server’s response code. If the response is successful, it reads and prints the data using a BufferedReader. The response contains JSON data from the server.
Unlock Your Future in Java
Start Your Java Journey for Free Today
Making a POST Request (Handling a Request)
The POST request is used to send data to the server. The data here is sent in the request body.
It is also used to create a new resource.
Example:
Output:
Explanation: In the above Java program, the program sends the data to the server. It makes a connection with the API and sets the request method to “POST”. It also has headers to show JSON data Content-Type: application/json. After sending a request, it checks the response code; if it is 201, it is successful, after which it reads the response from the server. Hence, the server data is changed by adding new information.
Methods of the java.net.HttpURLConnection Class in Java
There are various methods in the java.net.HttpURLConnection class in Java, which are used to perform different tasks related to HTTP communication. Some of the commonly used methods are as follows:
Method |
Action Performed |
disconnect() |
Indicates the connection to the server is no longer needed and releases resources |
getErrorStream() |
Retrieves an input stream for reading server errors |
getFollowRedirects() |
Determines if automatic redirection is enabled for HTTP responses (3xx status codes) |
getHeaderField(String name) |
Gets the value of a specific HTTP header field by name |
getInstanceFollowRedirects() |
Checks if automatic redirection is enabled for this connection instance |
getPermission() |
Retrieves permission required to access the URL resource |
getResponseCode() |
Returns the HTTP response status code (e.g., 200, 404) |
getResponseMessage() |
Provides the server message for the HTTP status code (e.g., “OK” for 200) |
getRequestMethod() |
Returns the HTTP request method used (e.g., “GET”, “POST”) |
setInstanceFollowRedirects(boolean followRedirects) |
Configures automatic HTTP redirect following for this connection instance |
setRequestMethod(String method) |
Sets the HTTP request method (e.g., “GET”, “POST”, “PUT”, “DELETE”) |
setFixedLengthStreamingMode(int length) |
Specifies content length when known in advance for output streaming |
setFollowRedirects(boolean followRedirects) |
Controls automatic following of HTTP 3xx redirect responses |
setChunkedStreamingMode(int chunkSize) |
Configures chunk size for streaming large data outputs |
usingProxy() |
Returns true if the connection uses a proxy server |
Other Popular Third-Party Java HTTP Libraries
Other than Java’s built-in library for the HttpURLConnection, there are many third-party libraries. Some of these are:
1. Apache HTTPClient
It is a popular, open-source Java library used for building the Http-based client applications. They are used for authentication and handling requests/responses.
2. OkHttp
It was developed by Square. OkHttp is a powerful and efficient HTTP client known for its speed. It gives better performance.
3. Retrofit
It is built on top of OkHttp. It is a REST client for both Java and Android. It converts HTTP APIs into Java interfaces and makes API calls readable and maintainable. It also supports JSON parsing, authentication, and asynchronous requests.
For the Maven projects, one has to add the dependency on it in the pom.xml file.
Feature |
Apache HttpClient |
OkHttp |
Retrofit |
Ease of Use |
Medium complexity |
Easy to implement |
Very easy with annotations |
Performance |
Fast processing |
Faster with SPDY support |
Fast (built on OkHttp) |
Connection Pooling |
Yes |
Yes |
Yes |
Async Support |
No |
Yes (Callbacks) |
Yes (RxJava/Coroutines) |
JSON Handling |
Manual parsing |
Manual parsing |
Automatic conversion |
Best Use Case |
Enterprise applications |
Android development |
REST API clients |
Get 100% Hike!
Master Most in Demand Skills Now!
Conclusion
From above, we learnt how to use HttpURLConnection in Java to send and receive data from websites. We have learned how to connect to a URL, get data (GET request), send data (POST request), and read responses. We have also looked at easy-to-use libraries like Apache HttpClient, OkHttp, and Retrofit, which can help make web requests easier and faster.
To learn more about this topic, you can refer to our Java Course.
How to Use java.net.URLConnection to Fire and Handle HTTP Requests? – FAQs
Q1. What is the difference between HttpURLConnection and URLConnection in Java?
The URLConnection class provides an API for generic URLs, and its subclass, HttpURLConnection, provides additional support for HTTP-specific features.
Q2. What are the four types of HTTP request methods?
The primary or most commonly used HTTP methods are POST, GET, PUT, and DELETE.
Q3. How to pass query parameters in HttpURLConnection?
Call the setRequestProperty() method on the HttpURLConnection instance to set request header values, such as “User-Agent” and “Accept-Language,” etc.
Q4. How to close HttpURLConnection in Java?
Once the response body has been read, the HttpURLConnection should be closed by calling disconnect().
Q5. How to send JSON body in URL?
You must encode a JSON object as a string and include it in the query string portion of the URL to pass it in a URL.