본문 바로가기
IT 개발

[java]httpclient 사용해 request 요청하기

by 로보찌빠냥 2023. 1. 25.

이번 포스팅에서는 Apache 에서 제공하는 HttpClient를 이용하는 방법을 알아보겠습니다. get, post 방식 두가지 방식 형태는 비슷하고 중간에 설정 하는 방법이 조금 다르니 참고 부탁드립니다. 소스는 포스팅하면서 작성한 부분이고 빌드해 보지는 않은 소스이기 때문에 틀린부분이 있으면 뎃글로 알려주시면 감사하겠습니다. 참고로 최소 Apache HttpClient 라이브러리 버전은 4.3 입니다.

 

GET방식

1. HttpClient 객체 생성

CloseableHttpClient httpClient = HttpClients.createDefault();

 

2. try-catch-finally 블록으로 감싸기

CloseableHttpClient httpClient = HttpClients.createDefault();

try{

   //여기에 코드 작성

}finally{

   httpClient.close();

}

 

3. HttpGet Object 생성

HttpGet httpGet = new HttpGet("http://www.tutorialspoint.com/");

 

4. get request 실행

HttpResponse httpResponse = httpclient.execute(httpGet);

 

5. 출력을 위해 try-catch-finally 블럭 하나 더 생성

CloseableHttpClient httpclient = HttpClients.createDefault();

try{

   CloseableHttpResponse httpresponse = httpclient.execute(httpget);

   try{

// 6. Scanner 객체를 이용해 response 출력

   }finally{

      httpresponse.close();

   }

}finally{

   httpclient.close();

}

 

7. 사용 완료된 response를 닫아줍니다.

httpresponse.close();

 

8. 사용 완료된 httpclient를 닫아줍니다.

httpclient.close();

 

전체 코드

import java.util.Scanner;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

public class CloseConnectionExample {
   
	public static void main(String args[])throws Exception{
 
		// 1. HttpClient 객체 생성
		CloseableHttpClient httpclient = HttpClients.createDefault();

		// 2. try-catch-finally 블록으로 감싸기
		try{
			// 3. HttpGet object 생성
			HttpGet httpget = new HttpGet("http://www.tutorialspoint.com/");

			// 4. Get request 실행
			CloseableHttpResponse httpresponse = httpclient.execute(httpget);

			// 5. 출력을 위해 try-catch-finally 블럭 하나 더 감싸기
			try{
				// 6. Scanner를 이용한 response 출력
				Scanner sc = new Scanner(httpresponse.getEntity().getContent());
				while(sc.hasNext()) {
					System.out.println(sc.nextLine());
				}
			}finally{
				// 7. 사용 완료된 response를 닫아줍니다.
				httpresponse.close();
			}
		}finally{
			// 8. 사용 완료된 httpclient를 닫아줍니다.
			httpclient.close();
		}
	}
}

 

POST방식

1. HttpClient 객체 생성

CloseableHttpClient httpClient = HttpClients.createDefault();

 

2. try-catch-finally 블록으로 감싸기

CloseableHttpClient httpClient = HttpClients.createDefault();

try{

   //여기에 코드 작성

}finally{

   httpClient.close();

}

 

3. HttpPost Object 생성

HttpPost httpPost = new HttpPost(“http://www.tutorialspoint.com/");

 

4. 키벨류 형태로 파라메터를 만들어 줍니다.

List<NameValuePair> postParams = new ArrayList<NameValuePair>();

postParams.add(new BasicNameValuePair("param1", "data1"));

postParams.add(new BasicNameValuePair("param2", "data2"));

 

5. post request 실행

CloseableHttpResponse httpresponse = httpclient.execute(httpPost);

 

6. 출력을 위해 try-catch-finally 블럭 하나 더 생성

CloseableHttpClient httpclient = HttpClients.createDefault();

try{

   CloseableHttpResponse httpresponse = httpclient.execute(httpPost);

   try{

// 7. Scanner 객체를 이용해 response 출력

   }finally{

      httpresponse.close();

   }

}finally{

   httpclient.close();

}

8. 사용 완료된 response를 닫아줍니다.

httpresponse.close();

 

9. 사용 완료된 httpclient를 닫아줍니다.

httpclient.close();

 

전체코드

import java.util.Scanner;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

public class CloseConnectionExample {
   
	public static void main(String args[])throws Exception{
 
		// 1. HttpClient 객체 생성
		CloseableHttpClient httpclient = HttpClients.createDefault();

		// 2. try-catch-finally 블록으로 감싸기
		try{
			// 3. HttpPost object 생성 및 전달 값 설정
			HttpPost httpPost = new HttpPost("http://www.tutorialspoint.com/");
			httpPost.setHeader("Accept", "application/json");
			httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

			// 4. 키벨류 형태로 파라메터를 만들어 줍니다.
			List<NameValuePair> postParams = new ArrayList<NameValuePair>();
			postParams.add(new BasicNameValuePair("param1", "data1"));
			postParams.add(new BasicNameValuePair("param2", "data2"));

 			// Post 방식인 경우 데이터를 Request body message에 설정합니다.
			HttpEntity postEntity = new UrlEncodedFormEntity(postParams, "UTF-8"); // uff-8로 인코딩
			httpPost.setEntity(postEntity);
			
			// 5. Post request 실행
			CloseableHttpResponse httpresponse = httpclient.execute(httpPost);

			// 6. 출력을 위해 try-catch-finally 블럭 하나 더 감싸기
			try{
				// 7. Scanner를 이용한 response 출력
				Scanner sc = new Scanner(httpresponse.getEntity().getContent());
				while(sc.hasNext()) {
					System.out.println(sc.nextLine());
				}
			}finally{
				// 8. 사용 완료된 response를 닫아줍니다.
				httpresponse.close();
			}
		}finally{
			// 9. 사용 완료된 httpclient를 닫아줍니다.
			httpclient.close();
		}
	}
}

 

이상 java 에서 HttpClient 를 사용해 get, post request 하는 방법을 알아봤습니다. 감사합니다.

 

참고 : https://www.tutorialspoint.com/apache_httpclient/apache_httpclient_closing_connection.htm

반응형

댓글