Quick Contact

    Hibernate

    Apache HttpClient HTML Form POST Request Example

    Working with HTML forms

    Many applications need to simulate the process of submitting an HTML form, for instance, in order to log in to a web application or submit input data. HttpClient provides the entity class UrlEncodedFormEntity to facilitate the process.

    	List< NameValuePair>formparams=newArrayList< NameValuePair>();
    	formparams.add(newBasicNameValuePair("param1", "value1"));
    	formparams.add(newBasicNameValuePair("param2", "value2"));
    	UrlEncodedFormEntity entity =newUrlEncodedFormEntity(formparams, Consts.UTF_8);
    	HttpPosthttppost=newHttpPost("http://localhost/handler.do");
    	httppost.setEntity(entity);
    

    The UrlEncodedFormEntity instance will use the so-called URL encoding to encode parameters and produce the following content:

    param1=value1&param2=value2

    HttpClient supports out of the box all HTTP methods defined in the HTTP/1.1 specification: GET, HEAD, POST, PUT, DELETE, TRACE, and OPTIONS. There is a specific class for each method type.: HttpGet, HttpHead, HttpPost, HttpPut, HttpDelete, HttpTrace, and HttpOptions.

    In this example, we will use HttpPost class to handle the POST HTTP method.

    Using the Apache HttpClient – Maven dependencies

    The Apache HttpClient library allows handling HTTP requests. To use this library add a dependency to your Maven or Gradle build file. You find the latest version here: https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient

    We use maven to manage our dependencies and are using Apache HttpClient version 4.5. Add the following dependency to your project.

    	< dependency>
    	< groupId>org.apache.httpcomponents< /groupId>
    	< artifactId>httpclient< /artifactId>
    	< version>4.5< /version>
    	< /dependency>
    

    Development Steps

    1. Create instance of CloseableHttpClient using helper class HttpClients.

      CloseableHttpClienthttpclient=HttpClients.createDefault()

      The HttpClients.createDefault() method creates CloseableHttpClient instance with default configuration.

    2. Create a basic POST request

      HttpPosthttpPost=newHttpPost(“http://httpbin.org/post”);

    3. Prepare Form Object
      List< NameValuePair> form =newArrayList<>();
      form.add(newBasicNameValuePair("John", "Cena"));
      form.add(newBasicNameValuePair("Tom", "Cruise"));
      form.add(newBasicNameValuePair("tony", "stark"));
      UrlEncodedFormEntity entity =newUrlEncodedFormEntity(form, Consts.UTF_8);
      
    4. Create a custom response handler
      ResponseHandler< String>responseHandler= response -> {
      int status =response.getStatusLine().getStatusCode();
      if (status >=200&& status <300) {
      HttpEntity entity =response.getEntity();
      return entity !=null?EntityUtils.toString(entity) :null;
          } else {
      thrownewClientProtocolException("Unexpected response status: "+ status);
          }
      };
      
    5. Send basic POST request via execute() Method

      StringresponseBody=httpclient.execute(httpPost, responseHandler);

    Submitting HTML Form Parameters

    In the following example, we post HTML Form parameters to the resource http://httpbin.org/post. This resources acknowledges the data and returns a JSON object which we’ll simply print to the console. When sending HTML Form parameters, you should normally set the content-type to application/x-www-form-urlencoded, but Apache HttpClient automatically detects the content type and will set it accordingly.

    packagecom.tutorial.ducatindia.httpclient.examples;

    	importorg.apache.http.Consts;
    	importorg.apache.http.HttpEntity;
    	importorg.apache.http.NameValuePair;
    	importorg.apache.http.client.ClientProtocolException;
    	importorg.apache.http.client.ResponseHandler;
    	importorg.apache.http.client.entity.UrlEncodedFormEntity;
    	importorg.apache.http.client.methods.HttpPost;
    	importorg.apache.http.impl.client.CloseableHttpClient;
    	importorg.apache.http.impl.client.HttpClients;
    	importorg.apache.http.message.BasicNameValuePair;
    	importorg.apache.http.util.EntityUtils;
    	importjava.io.IOException;
    	importjava.util.ArrayList;
    	importjava.util.List;
    
    	/**
    	 * This example demonstrates the use of {@linkHttpPost} request method. And
    	 * sending HTML Form request parameters
    	 */
    	publicclassHttpClientHttpFormExample {
    
    	publicstaticvoidmain(String...args) throwsIOException {
    
    	try (CloseableHttpClienthttpclient=HttpClients.createDefault()) {
    
    	List form =newArrayList<> ();
    	form.add(newBasicNameValuePair("John", "Cena"));
    	form.add(newBasicNameValuePair("Tom", "Cruise"));
    	form.add(newBasicNameValuePair("tony", "stark"));
    	UrlEncodedFormEntity entity =newUrlEncodedFormEntity(form, Consts.UTF_8);
    
    	HttpPosthttpPost=newHttpPost("http://httpbin.org/post");
    	httpPost.setEntity(entity);
    	System.out.println("Executing request "+httpPost.getRequestLine());
    
    	// Create a custom response handler
    	ResponseHandler< String>responseHandler= response -> {
    	int status =response.getStatusLine().getStatusCode();
    	if (status >=200&& status <300) {
    	HttpEntityresponseEntity=response.getEntity();
    	returnresponseEntity!=null?EntityUtils.toString(responseEntity) :null;
    	                } else {
    	thrownewClientProtocolException("Unexpected response status: "+ status);
    	                }
    	            };
    	StringresponseBody=httpclient.execute(httpPost, responseHandler);
    	System.out.println("----------------------------------------");
    	System.out.println(responseBody);
    	        }
    	    }
    	}
    

    Output

    Executing request POST http://httpbin.org/post HTTP/1.1

    —————————————-

    	{
    	"args": {}, 
    	"data": "", 
    	"files": {}, 
    	"form": {
    	"John": "Cena", 
    	"Tom": "Cruise", 
    	"tony": "stark"
    	  }, 
    	"headers": {
    	"Accept-Encoding": "gzip,deflate", 
    	"Connection": "close", 
    	"Content-Length": "31", 
    	"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", 
    	"Host": "httpbin.org", 
    	"User-Agent": "Apache-HttpClient/4.5 (Java/1.8.0_172)"
    	  }, 
    	"json": null, 
    	"origin": "49.35.12.218", 
    	"url": "http://httpbin.org/post"
    	}	
    

    Apply now for Advanced Java Training Course

    Copyright 1999- Ducat Creative, All rights reserved.

    Anda bisa mendapatkan server slot online resmi dan terpercaya tentu saja di sini. Sebagai salah satu provider yang menyediakan banyak pilihan permainan.