|
1 | 1 | package HTTP_Client;
|
| 2 | + |
2 | 3 | /*
|
3 | | -После Java 11, наиболее предпочтительным классом |
4 | | -для взаимодействия приложений с HTTP серверами |
5 | | -является класс HttpClient, а не более ранний класс |
6 | | -URL. HttpClient потокобезопасен и может работать |
7 | | -в асинхронном режиме. |
| 4 | +После Java 11, наиболее предпочтительным классом для взаимодействия приложений с HTTP серверами является класс |
| 5 | +HttpClient, а не более ранний класс URL. HttpClient потокобезопасен и может работать в асинхронном режиме. |
8 | 6 | */
|
| 7 | + |
9 | 8 | import java.io.IOException;
|
10 | 9 | import java.net.URI;
|
11 | 10 | import java.net.http.HttpClient;
|
|
16 | 15 | public class HttpClientExample {
|
17 | 16 |
|
18 | 17 | public static void main(String[] args) throws IOException, InterruptedException {
|
| 18 | + |
19 | 19 | /*
|
20 | | - Создаем HTTP клиент через билдер и задаем версию |
21 | | - протокола 1.1. Теперь, используя этот клиент, мы |
22 | | - можем отправлять запросы к HTTP серверу. |
| 20 | + Создаем HTTP клиент через билдер и задаем версию протокола 1.1. Теперь, используя этот клиент, мы можем отправлять запросы к HTTP серверу. |
23 | 21 |
|
24 | | - При этом данный объект уже на стадии создания имеет |
25 | | - массу возможностей или методов для обращения к HTTP |
26 | | - серверу в различных режимах (аутентификация, |
27 | | - соединение по таймауту, выбор приоритета и т.д.). |
| 22 | + При этом данный объект уже на стадии создания имеет массу возможностей или методов для обращения к HTTP серверу в различных режимах |
| 23 | + (аутентификация, соединение по таймауту, выбор приоритета и т.д.). |
28 | 24 | */
|
| 25 | + |
29 | 26 | HttpClient myFirstHttpClient = HttpClient
|
30 | 27 | .newBuilder()
|
31 | 28 | .version(HttpClient.Version.HTTP_1_1)
|
32 | 29 | .build();
|
33 | | - /* |
34 | | - Создаем запрос к HTTP серверу, объект HttpRequest, |
35 | | - в котором мы можем определить метод отправки запроса: |
36 | | - GET, POST, DELETE и т.д. |
37 | | - */ |
| 30 | + |
| 31 | + /* Создаем запрос к HTTP серверу, объект HttpRequest, в котором мы можем определить метод отправки запроса: GET, POST, DELETE и т.д. */ |
| 32 | + |
38 | 33 | HttpRequest myRequest = HttpRequest
|
39 | 34 | .newBuilder(URI.create("https://ya.ru"))
|
40 | 35 | .GET() // Выбрали метод запроса
|
41 | 36 | .build();
|
42 | | - /* |
43 | | - Метод *.send() позволяет отправить запрос к HTTP |
44 | | - серверу, при этом есть возможность отправить запрос |
45 | | - в синхронном и асинхронном режиме (получив |
46 | | - CompletableFuture ответ). |
47 | | - */ |
48 | | - HttpResponse<String> responseToMeFromServer = |
49 | | - myFirstHttpClient.send(myRequest, HttpResponse.BodyHandlers.ofString()); |
| 37 | + |
| 38 | + /* Метод *.send() позволяет отправить запрос к HTTP серверу, при этом есть возможность отправить запрос в синхронном и асинхронном режиме (получив CompletableFuture ответ). */ |
| 39 | + HttpResponse<String> responseToMeFromServer = myFirstHttpClient.send(myRequest, HttpResponse.BodyHandlers.ofString()); |
| 40 | + |
50 | 41 | /* Получаем "заголовки" - хедеры отправленные HTTP сервером в ответ на наш запрос */
|
51 | 42 | Map responseHeaders = responseToMeFromServer.headers().map();
|
52 | | - |
53 | 43 | responseHeaders.forEach((key, value) -> {
|
54 | 44 | System.out.println(key + " : " + value);
|
55 | 45 | });
|
56 | | - |
57 | 46 | System.out.println("\n**************************************************************************\n");
|
58 | 47 | /* Получаем HTML страницу, сформированную сервером, в ответ на наш запрос */
|
59 | 48 | String responseBody = responseToMeFromServer.body();
|
60 | 49 | System.out.println(responseBody);
|
61 | 50 | }
|
62 | | - |
63 | 51 | }
|
64 | | - |
65 | | - |
0 commit comments