Используя HttpClient, вы можете подключиться к веб-сайту, который нуждался в имени пользователя и пароле. В этой главе объясняется, как выполнить клиентский запрос к сайту, который запрашивает имя пользователя и пароль.
Шаг 1 — Создание объекта CredentialsProvider
Интерфейс CredentialsProvider поддерживает коллекцию для хранения учетных данных пользователя. Вы можете создать его объект, создав экземпляр класса BasicCredentialsProvider , который является реализацией этого интерфейса по умолчанию.
CredentialsProvider credentialsPovider = new BasicCredentialsProvider();
Шаг 2 — Установите учетные данные
Вы можете установить необходимые учетные данные для объекта CredentialsProvider, используя метод setCredentials () .
Этот метод принимает два объекта, как указано ниже —
-
Объект AuthScope — область аутентификации, в которой указываются такие данные, как имя хоста, номер порта и имя схемы аутентификации.
-
Объект учетных данных — указание учетных данных (имя пользователя, пароль).
Объект AuthScope — область аутентификации, в которой указываются такие данные, как имя хоста, номер порта и имя схемы аутентификации.
Объект учетных данных — указание учетных данных (имя пользователя, пароль).
Установите учетные данные, используя метод setCredentials () для хоста и прокси, как показано ниже —
credsProvider.setCredentials(new AuthScope("example.com", 80), new UsernamePasswordCredentials("user", "mypass")); credsProvider.setCredentials(new AuthScope("localhost", 8000), new UsernamePasswordCredentials("abc", "passwd"));
Шаг 3 — Создайте объект HttpClientBuilder
Создайте HttpClientBuilder, используя метод custom () класса HttpClients .
//Creating the HttpClientBuilder HttpClientBuilder clientbuilder = HttpClients.custom();
Шаг 4 — Установите учетные данныеPovider
Вы можете установить созданный выше объект credentialsPovider в HttpClientBuilder, используя метод setDefaultCredentialsProvider () .
Задайте объект CredentialProvider, созданный на предыдущем шаге, для построителя клиента, передав его методу объекта CredentialsProvider (), как показано ниже.
clientbuilder = clientbuilder.setDefaultCredentialsProvider(credsProvider);
Шаг 5 — Создайте CloseableHttpClient
Создайте объект CloseableHttpClient, используя метод build () класса HttpClientBuilder .
CloseableHttpClient httpclient = clientbuilder.build()
Шаг 6 — Создайте объект HttpGet и выполните его
Создайте объект HttpRequest, создав экземпляр класса HttpGet. Выполните этот запрос, используя метод execute () .
//Creating a HttpGet object HttpGet httpget = new HttpGet("https://www.tutorialspoint.com/ "); //Executing the Get request HttpResponse httpresponse = httpclient.execute(httpget);
пример
Ниже приведен пример программы, которая демонстрирует выполнение HTTP-запроса к целевому сайту, который требует аутентификации пользователя.
import org.apache.http.Header; import org.apache.http.HttpResponse; import org.apache.http.auth.AuthScope; import org.apache.http.auth.Credentials; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; public class UserAuthenticationExample { public static void main(String args[]) throws Exception{ //Create an object of credentialsProvider CredentialsProvider credentialsPovider = new BasicCredentialsProvider(); //Set the credentials AuthScope scope = new AuthScope("https://www.tutorialspoint.com/questions/", 80); Credentials credentials = new UsernamePasswordCredentials("USERNAME", "PASSWORD"); credentialsPovider.setCredentials(scope,credentials); //Creating the HttpClientBuilder HttpClientBuilder clientbuilder = HttpClients.custom(); //Setting the credentials clientbuilder = clientbuilder.setDefaultCredentialsProvider(credentialsPovider); //Building the CloseableHttpClient object CloseableHttpClient httpclient = clientbuilder.build(); //Creating a HttpGet object HttpGet httpget = new HttpGet("https://www.tutorialspoint.com/questions/index.php"); //Printing the method used System.out.println(httpget.getMethod()); //Executing the Get request HttpResponse httpresponse = httpclient.execute(httpget); //Printing the status line System.out.println(httpresponse.getStatusLine()); int statusCode = httpresponse.getStatusLine().getStatusCode(); System.out.println(statusCode); Header[] headers= httpresponse.getAllHeaders(); for (int i = 0; i<headers.length;i++) { System.out.println(headers[i].getName()); } } }
Выход
При выполнении вышеупомянутая программа генерирует следующий вывод.