CodeGym /Java Course /모듈 3 /HttpRequest로 요청하기

HttpRequest로 요청하기

모듈 3
레벨 10 , 레슨 1
사용 가능

메서드 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();

이 메서드의 존재는 HttpClientHttpRequest 클래스가 다양한 작업을 수행할 수 있음을 보여줍니다. 요청을 실행 중이고 네트워크에 문제가 발생했으며 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();

모든 초등은 간단합니다.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION