메서드 newBuilder(), build()
HttpRequest 클래스는 이름에서 이해하기 쉬운 http 요청을 설명하는 데 사용됩니다. 이 개체는 그 자체로는 아무 것도 수행하지 않으며 http 요청에 대한 다양한 정보를 포함할 뿐입니다. 따라서 이미 짐작하셨겠지만 Builder 템플릿을 사용하여 생성할 수도 있습니다.
HttpRequest request = HttpRequest.newBuilder()
.method1()
.method2()
.methodN()
.build();
메소드 newBuilder() 및 build() 호출 사이에 객체를 생성하기 위해 모든 메소드를 호출해야 합니다.HTTP 요청.
간단한 요청의 예는 다음과 같습니다.
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(“http://codegym.cc”))
.build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
공식 문서의 링크에서 HttpRequest 클래스 의 모든 메서드를 찾을 수 있습니다 .
그런 다음 가장 인기있는 것을 분석합니다.
uri() 메소드
uri() 메서드를 사용하여 http 요청을 보낼 URI(또는 URL)를 설정할 수 있습니다. 예:
HttpRequest request = HttpRequest.newBuilder()
.uri( URI.create(“http://codegym.cc”) )
.build();
그런데 URI를 newBuilder() 메서드에 직접 전달하여 이 코드를 조금 더 짧게 만들 수 있습니다 .
HttpRequest request = HttpRequest.newBuilder( URI.create(“http://codegym.cc”) ).build();
중요한! URI는 두 가지 방법으로 만들 수 있습니다.
- newURI(문자열)
- URI.create(문자열)
두 번째 방법이 바람직합니다. 불행히도 첫 번째 방법은 URI 생성자가 public URI(String str) throws URISyntaxException 으로 선언되고 URISyntaxException이 확인 예외로 선언되기 때문에 그리 좋지 않습니다 .
메서드 GET(), POST(), PUT(), DELETE()
다음 방법을 사용하여 http 요청 방법을 설정할 수 있습니다.
- 얻다()
- 우편()
- 놓다()
- 삭제()
간단한 GET 요청은 다음과 같습니다.
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.GET()
.build();
버전() 메소드
HTTP 프로토콜 버전도 설정할 수 있습니다. 2가지 옵션만 있습니다.
- HttpClient.버전.HTTP_1_1
- HttpClient.버전.HTTP_2
HTTP/2 프로토콜을 사용하여 요청을 생성하려는 경우 다음과 같이 작성해야 합니다.
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.version( HttpClient.Version.HTTP_2 )
.GET()
.build();
매우 간단하지 않습니까? :)
timeout() 메소드
쿼리 실행 시간을 설정할 수도 있습니다. 통과하고 요청이 완료되지 않으면 HttpTimeoutException 이 발생합니다 .
시간 자체는 객체를 사용하여 설정됩니다.지속Java DateTime API에서. 예:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.timeout( Duration.of(5, SECONDS) )
.GET()
.build();
이 메서드의 존재는 HttpClient 및 HttpRequest 클래스가 다양한 작업을 수행할 수 있음을 보여줍니다. 요청을 실행 중이고 네트워크에 문제가 발생했으며 30초 동안 지속되었다고 상상해 보십시오. 예외를 즉시 수신하고 올바르게 대응하는 것이 훨씬 더 유용합니다.
헤더() 메서드
모든 요청에 원하는 만큼의 헤더를 추가할 수도 있습니다. 그리고 그것은 다른 것과 마찬가지로 쉽습니다. 이를 위한 특별한 방법이 있습니다 - header() . 예:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.header("name1", "value1")
.header("name2", "value2")
.GET()
.build();
한 번에 많은 헤더를 설정하는 또 다른 방법이 있습니다. 예를 들어 헤더 목록을 배열로 변환하는 경우 유용할 수 있습니다.
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.headers("name1", "value1", "name2", "value2")
.GET()
.build();
모든 초등은 간단합니다.
GO TO FULL VERSION