The following code snippet show you how to send POST request with a JSON body using HttpClient. The payload in this example is a user information containing id
, first_name
and a last_name
. We placed the payload in an object called StringEntity
and also set its content type to ContentType.APPLICATION_FORM_URLENCODED
.
On the other end called by this post request, data can be read for instance in a Java Servlet using the HttpServletRequest.getParameter()
method. For example to read the JSON body send below we can call request.getParameter("data")
. This will give us the payload sent using the HttpClient Post request.
Let’s jump into the code snippet below:
package org.kodejava.apache.http;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import java.io.IOException;
public class HttpPostJsonExample {
public static void main(String[] args) {
String payload = """
data={
"username": "admin",
"first_name": "System",
"last_name": "Administrator"
}
""";
StringEntity entity = new StringEntity(payload,
ContentType.APPLICATION_FORM_URLENCODED);
try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
HttpPost request = new HttpPost("http://localhost:8080/register");
request.setEntity(entity);
HttpResponse response = httpClient.execute(request);
System.out.println(response.getStatusLine().getStatusCode());
} catch (IOException e) {
e.printStackTrace();
}
}
}
Maven Dependencies
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>