A POST request is used to send data to the server; for example, customer information, file upload, etc., using HTML forms.

The HttpClient API provides a class named HttpPost which represents the POST request.

Follow the steps given below to send a HTTP POST request using HttpClient library.

## Step 1 - Create an HttpClient Object

The createDefault() method of the HttpClients class returns an object of the class CloseableHttpClient, which is the base implementation of the HttpClient interface.

Using this method, create an HttpClient object.

CloseableHttpClient httpClient = HttpClients.createDefault();

## Step 2 - Create HttpPost Object

The HttpPost class represents the HTTP POST request. This sends required data and retrieves the information of the given server using a URI.

Create this request by instantiating the HttpPost class and pass a string value representing the URI, as a parameter to its constructor.

HttpGet httpGet = new HttpGet("http://www.tutorialspoint.com/");

## Step 3 - Execute the Get Request

The execute() method of the CloseableHttpClient object accepts a HttpUriRequest (interface) object (i.e. HttpGet, HttpPost, HttpPut, HttpHead etc.) and returns a response object.

HttpResponse httpResponse = httpclient.execute(httpget);

## Example

Following is an example which demonstrates the execution of the HTTP POST request using HttpClient library.

import org.apache.http.HttpResponse;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients; public class HttpPostExample {    public static void main(String args[]) throws Exception{       //Creating a HttpClient object      CloseableHttpClient httpclient = HttpClients.createDefault();       //Creating a HttpGet object      HttpPost httppost = new HttpPost("https://www.tutorialspoint.com/");       //Printing the method used      System.out.println("Request Type: "+httppost.getMethod());       //Executing the Get request      HttpResponse httpresponse = httpclient.execute(httppost);       Scanner sc = new Scanner(httpresponse.getEntity().getContent());       //Printing the status line      System.out.println(httpresponse.getStatusLine());      while(sc.hasNext()) {         System.out.println(sc.nextLine());      }   }}

## Output

The above program generates the following output.

Request Type: POST<!DOCTYPE html><!--[if IE 8]><html class = "ie ie8"> <![endif]--><!--[if IE 9]><html class = "ie ie9"> <![endif]--><!--[if gt IE 9]><!--> <html lang = "en-US"> <!--<![endif]--><head><!-- Basic --><meta charset = "utf-8"><title>Parallax Scrolling, Java Cryptography, YAML, Python Data Science, Javai18n, GitLab, TestRail, VersionOne, DBUtils, Common CLI, Seaborn, Ansible,LOLCODE, Current Affairs 2018, Apache Commons Collections</title><meta name = "Description" content = "Parallax Scrolling, Java Cryptography, YAML,Python Data Science, Java i18n, GitLab, TestRail, VersionOne, DBUtils, CommonCLI, Seaborn, Ansible, LOLCODE, Current Affairs 2018, Intellij Idea, ApacheCommons Collections, Java 9, GSON, TestLink, Inter Process Communication (IPC),Logo, PySpark, Google Tag Manager, Free IFSC Code, SAP Workflow"/><meta name = "Keywords" content="Python Data Science, Java i18n, GitLab,TestRail, VersionOne, DBUtils, Common CLI, Seaborn, Ansible, LOLCODE, Gson,TestLink, Inter Process Communication (IPC), Logo"/><meta http-equiv = "X-UA-Compatible" content = "IE = edge"><meta name = "viewport" conten t= "width = device-width,initial-scale = 1.0,userscalable = yes"><link href = "https://cdn.muicss.com/mui-0.9.39/extra/mui-rem.min.css"rel = "stylesheet" type = "text/css" /><link rel = "stylesheet" href = "/questions/css/home.css?v = 3" /><script src = "/questions/js/jquery.min.js"></script><script src = "/questions/js/fontawesome.js"></script><script src = "https://cdn.muicss.com/mui-0.9.39/js/mui.min.js"></script></head>. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .</script></body></html>