Используя библиотеку HttpClient, вы можете отправить запрос или войти в форму, передав параметры.
Следуйте инструкциям ниже, чтобы войти в форму.
Шаг 1 — Создайте объект HttpClient
Метод createDefault () класса HttpClients возвращает объект класса CloseableHttpClient , который является базовой реализацией интерфейса HttpClient. Используя этот метод, создайте объект HttpClient —
CloseableHttpClient httpClient = HttpClients.createDefault();
Шаг 2 — Создание объекта RequestBuilder
Класс RequestBuilder используется для построения запроса путем добавления к нему параметров. Если тип запроса — PUT или POST, он добавляет параметры в запрос как объект, закодированный в URL.
Создайте объект RequestBuilder (типа POST), используя метод post ().
//Building the post request object RequestBuilder reqbuilder = RequestBuilder.post();
Шаг 3 — Установите Uri и параметры для RequestBuilder.
Установите URI и параметры для объекта RequestBuilder, используя методы setUri () и addParameter () класса RequestBuilder.
//Set URI and parameters RequestBuilder reqbuilder = reqbuilder.setUri("http://httpbin.org/post"); reqbuilder = reqbuilder1.addParameter("Name", "username").addParameter("password", "password");
Шаг 4 — Создайте объект HttpUriRequest
После установки необходимых параметров создайте объект HttpUriRequest с помощью метода build () .
//Building the HttpUriRequest object HttpUriRequest httppost = reqbuilder2.build();
Шаг 5 — Выполнить запрос
Метод execute объекта CloseableHttpClient принимает объект HttpUriRequest (interface) (т.е. HttpGet, HttpPost, HttpPut, HttpHead и т. Д.) И возвращает объект ответа.
Выполните HttpUriRequest, созданный на предыдущих шагах, передав его методу execute () .
//Execute the request HttpResponse httpresponse = httpclient.execute(httppost);
пример
В следующем примере показано, как войти в форму, отправив учетные данные для входа. Здесь мы отправили два параметра — имя пользователя и пароль в форму и попытались напечатать сущность сообщения и статус запроса.
import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.methods.RequestBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.net.URISyntaxException; public class FormLoginExample { public static void main(String args[]) throws Exception { //Creating CloseableHttpClient object CloseableHttpClient httpclient = HttpClients.createDefault(); //Creating the RequestBuilder object RequestBuilder reqbuilder = RequestBuilder.post(); //Setting URI and parameters RequestBuilder reqbuilder1 = reqbuilder.setUri("http://httpbin.org/post"); RequestBuilder reqbuilder2 = reqbuilder1.addParameter("Name", "username").addParameter("password", "password"); //Building the HttpUriRequest object HttpUriRequest httppost = reqbuilder2.build(); //Executing the request HttpResponse httpresponse = httpclient.execute(httppost); //Printing the status and the contents of the response System.out.println(EntityUtils.toString(httpresponse.getEntity())); System.out.println(httpresponse.getStatusLine()); } }
Выход
При выполнении вышеупомянутая программа генерирует следующий вывод —
{ "args": {}, "data": "", "files": {}, "form": { "Name": "username", "password": "password" }, "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.6 (Java/1.8.0_91)" }, "json": null, "origin": "117.216.245.180", "url": "http://httpbin.org/post" } HTTP/1.1 200 OK
Форма Войти с помощью файлов cookie
Если ваша форма хранит куки, вместо создания объекта CloseableHttpClient по умолчанию.
Создайте объект CookieStore, создав экземпляр класса BasicCookieStore.
//Creating a BasicCookieStore object BasicCookieStore cookieStore = new BasicCookieStore();
Создайте HttpClientBuilder, используя метод custom () класса HttpClients .
//Creating an HttpClientBuilder object HttpClientBuilder clientbuilder = HttpClients.custom();
Установите хранилище cookie для построителя клиента, используя метод setDefaultCookieStore ().
//Setting default cookie store to the client builder object Clientbuilder = clientbuilder.setDefaultCookieStore(cookieStore);
Создайте объект CloseableHttpClient, используя метод build () .
//Building the CloseableHttpClient object CloseableHttpClient httpclient = clientbuilder1.build();
Создайте объект HttpUriRequest, как указано выше, передавая запрос на выполнение.
Если на странице хранятся файлы cookie, переданные вами параметры будут добавлены в хранилище файлов cookie.
Вы можете распечатать содержимое объекта CookieStore, где вы можете увидеть ваши параметры (наряду с предыдущими страница, сохраненная в кейсе).
Чтобы распечатать файлы cookie, получите все файлы cookie из объекта CookieStore с помощью метода getCookies () . Этот метод возвращает объект List . Используя Iterator, распечатайте содержимое списка объектов, как показано ниже —