1. 소개

HttpClient 는 HTTP 및 관련 프로토콜에 중점을 둔 저수준 Java 구성 요소의 도구 집합을 제공하는 Apache HttpComponents 프로젝트의 일부입니다. HttpClient의 가장 중요한 기능은 HTTP 메서드를 실행하는 것입니다.

이 짧은 사용방법(예제)에서는 HttpClient 요청에 매개 변수를 추가하는 방법에 대해 설명 합니다. UriBuilder 를 String 이름-값 쌍 및 NameValuePair 와 함께 사용하는 방법을 알아 봅니다 . 마찬가지로 UrlEncodedFormEntity를 사용하여 매개 변수를 전달하는 방법을 살펴 보겠습니다 .

2. UriBuilder를 사용하여 HttpClient 요청에 매개 변수 추가

UriBuilder 는 빌더 패턴을 통해 URI를 쉽게 생성하고 매개 변수를 추가하는 데 도움이됩니다. 우리는 할 수 있습니다 사용하여 매개 변수를 추가 문자열 이름 - 값 쌍을, 또는 사용 의 NameValuePair 그 목적의 클래스를 .

이 예에서 최종 URL은 다음과 같아야합니다.

https://example.com?param1=value1¶m2=value2

문자열 이름-값 쌍 을 사용하는 방법을 살펴 보겠습니다 .

public CloseableHttpResponse sendHttpRequest() {
    HttpGet httpGet = new HttpGet("https://example.com");
    URI uri = new URIBuilder(httpGet.getURI())
      .addParameter("param1", "value1")
      .addParameter("param2", "value2")
      .build();
   ((HttpRequestBase) httpGet).setURI(uri);
    CloseableHttpResponse response = client.execute(httpGet);
    client.close();
}

또한 HttpClient 요청에 대한 NameValuePair List을 사용할 수 있습니다 .

public CloseableHttpResponse sendHttpRequest() {
    List nameValuePairs = new ArrayList();
    nameValuePairs.add(new BasicNameValuePair("param1", "value1"));
    nameValuePairs.add(new BasicNameValuePair("param2", "value2"));
    HttpGet httpGet = new HttpGet("https://example.com");
    URI uri = new URIBuilder(httpGet.getURI())
      .addParameters(nameValuePairs)
      .build();
   ((HttpRequestBase) httpGet).setURI(uri);
    CloseableHttpResponse response = client.execute(httpGet);
    client.close();
}

마찬가지로 UriBuilder 를 사용하여 다른 HttpClient 요청 메서드에 매개 변수를 추가 할 수 있습니다.

3. UrlEncodedFormEntity를 사용하여 HttpClient 요청에 매개 변수 추가

또 다른 접근 방식은 UrlEncodedFormEntity 를 활용하는 것입니다 .

public CloseableHttpResponse sendHttpRequest() {
    List nameValuePairs = new ArrayList();
    nameValuePairs.add(new BasicNameValuePair("param1", "value1"));
    nameValuePairs.add(new BasicNameValuePair("param2", "value2"));
    HttpPost httpPost = new HttpPost("https://example.com");
    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, StandardCharsets.UTF_8));
    CloseableHttpResponse response = client.execute(httpPost);
    client.close();
}

것을 알 수 UrlEncodedFormEntity가 GET 요청에 사용할 수 없습니다 GET 요청이 엔티티를 포함 할 수있는 몸을 가지고 있지 않기 때문에.

4. 결론

이 예에서는 HttpClient 요청에 매개 변수를 추가하는 방법을 보여주었습니다. 또한 이러한 모든 예제 및 코드 스 니펫의 구현은 GitHub에서 사용할 수 있습니다 .