이번 포스팅에서는 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
'IT 개발' 카테고리의 다른 글
[javascript] javascript에서 $. (달러) 으로 시작하는것의 의미 (0) | 2023.01.30 |
---|---|
[javascript] Switch case 예제 및 사용방법 (0) | 2023.01.26 |
[javascript] var, let, const 변수 선언 시 차이 (0) | 2023.01.19 |
[javascript] forEach continue, break 기능 구현하기 (0) | 2023.01.18 |
[Kotlin] 코틀린 웹에서 실행해보기 (0) | 2023.01.16 |
댓글