728x90
반응형
이번 페이지에서는 Apache에서 제공하고 있는 HttpClient 라이브러리를 이용해 REST API를 호출하는 방법을 알아보자.
[GET]
public void get(String requestURL) {
try {
HttpClient client = HttpClientBuilder.create().build(); // HttpClient 생성
HttpGet getRequest = new HttpGet(requestURL); //GET 메소드 URL 생성
getRequest.addHeader("x-api-key", RestTestCommon.API_KEY); //KEY 입력
HttpResponse response = client.execute(getRequest);
//Response 출력
if (response.getStatusLine().getStatusCode() == 200) {
ResponseHandler<String> handler = new BasicResponseHandler();
String body = handler.handleResponse(response);
System.out.println(body);
} else {
System.out.println("response is error : " + response.getStatusLine().getStatusCode());
}
} catch (Exception e){
System.err.println(e.toString());
}
}
[POST]
public void post(String requestURL, String jsonMessage) {
try {
HttpClient client = HttpClientBuilder.create().build(); // HttpClient 생성
HttpPost postRequest = new HttpPost(requestURL); //POST 메소드 URL 새성
postRequest.setHeader("Accept", "application/json");
postRequest.setHeader("Connection", "keep-alive");
postRequest.setHeader("Content-Type", "application/json");
postRequest.addHeader("x-api-key", RestTestCommon.API_KEY); //KEY 입력
//postRequest.addHeader("Authorization", token); // token 이용시
postRequest.setEntity(new StringEntity(jsonMessage)); //json 메시지 입력
HttpResponse response = client.execute(postRequest);
//Response 출력
if (response.getStatusLine().getStatusCode() == 200) {
ResponseHandler<String> handler = new BasicResponseHandler();
String body = handler.handleResponse(response);
System.out.println(body);
} else {
System.out.println("response is error : " + response.getStatusLine().getStatusCode());
}
} catch (Exception e){
System.err.println(e.toString());
}
}
• HttpClient client = HttpClientBuilder.create().build(); 여기 HttpClient 인스턴스 생성부는 위에서는 각각 구현하였지만 개발하실 때는 한번만 생성하시고 재활용 하면 됩니다.
HttpURLConnection보다는 확실히 구현은 쉬웠습니다. HttpGet, HttpPost와 같이 Method를 직관적으로 생성하여 사용함으로 가독성도 올라간 것 같습니다. 그래도 뭔가 더 간단하고 심플하게 구현할 수 있었으면 좋겠다라는 아쉬움이 남습니다. 만약 위 코드를 비동기적으로 처리해야 하는 상황이라면 개발자들의 추가 작업이 필요해 보입니다.
Http Client 다른 솔루션 참고 링크
WebClient : https://digitalbourgeois.tistory.com/122
RestTemplate : https://digitalbourgeois.tistory.com/120
OkHttp : https://digitalbourgeois.tistory.com/59
HttpURLConnection : https://digitalbourgeois.tistory.com/57
728x90
반응형
'JAVA' 카테고리의 다른 글
[JAVA8] 함수형 인터페이스 정리 (0) | 2019.04.15 |
---|---|
[JAVA] OkHttp로 REST API 호출하기 (0) | 2019.01.18 |
[JAVA] HttpURLConnection로 REST API 호출하기 (0) | 2019.01.18 |
[JAVA] REST API Client Library 알아보기 in Java Project (0) | 2019.01.17 |
[JAVA 8] 메서드 레퍼런스 알아보기! (0) | 2018.09.21 |