Метод GET
Метод GET класса HttpRequest создает
объект HTTP-запроса с методом GET. Такой запрос
используется для получения данных с сервера
без изменения его состояния. Метод не принимает
параметров и возвращает объект HttpRequest,
готовый к отправке через HttpClient.
Обычно метод GET вызывается у объекта
HttpRequest.Builder, который создается
через HttpRequest.newBuilder. Перед вызовом
GET у билдера необходимо задать URI
с помощью метода uri.
Синтаксис
HttpRequest.Builder builder = HttpRequest.newBuilder();
builder.uri(URI.create("https://example.com"));
HttpRequest request = builder.GET().build();
Либо в сокращенной форме:
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.GET()
.build();
Пример
Давайте создадим GET-запрос и отправим его
на сервер с помощью HttpClient:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main
{
public static void main(String[] args) throws Exception
{
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://httpbin.org/get"))
.GET()
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println("Status code: " + response.statusCode());
System.out.println("Body: " + response.body());
}
}
Результат выполнения кода:
"Status code: 200"
"Body: {...}"
Пример
Давайте создадим GET-запрос с дополнительным
заголовком Accept и таймаутом:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class Main
{
public static void main(String[] args) throws Exception
{
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://httpbin.org/get"))
.header("Accept", "application/json")
.timeout(Duration.ofSeconds(10))
.GET()
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.statusCode());
System.out.println(response.headers().firstValue("content-type"));
}
}
Результат выполнения кода:
"200"
"Optional[application/json]"
Пример
Давайте сравним GET-запрос с POST-запросом, чтобы увидеть разницу в использовании:
import java.net.URI;
import java.net.http.HttpRequest;
public class Main
{
public static void main(String[] args)
{
HttpRequest getRequest = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.GET()
.build();
HttpRequest postRequest = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.POST(HttpRequest.BodyPublishers.ofString("data"))
.build();
System.out.println("GET method: " + getRequest.method());
System.out.println("POST method: " + postRequest.method());
}
}
Результат выполнения кода:
"GET method: GET"
"POST method: POST"
Смотрите также
-
класс
HttpRequest,
который представляет HTTP-запрос -
метод
newBuilder,
который создает билдер запроса -
метод
POST,
который создает POST-запрос -
метод
send,
который отправляет запрос на сервер