rest api 를 HttpUrlConnection 라이브러리를 사용하여 rest api 를 호출해 보자.
이번엔 post 방식으로 호출을 해서 데이터를 가지고 올 것이다. HttpClient를 사용해도 상관은 없다.
하지만, HttpUrlConnection 를 사용할 때와 HttpUrlConnection 을 자바로 사용할 때의 차이점을 알고 있는 것이 좋다.
rest api HttpUrlConnection 사용 post 호출
자바로 만들고 테스트 하기
이전에 HttpUrlConnection을 get 방식으로 데이터를 호출하였다.
HttpClient 를 사용해도 상관이 없지만, 둘의 차이가 있다는 점에 주의하자.
2021.03.12 - [programming/java] - rest api httpurlconnection 사용 get 호출 자바로 만들고 테스트 하기
준비물
이클립스 : 자바 개발을 위한 IDE 툴
HttpUrlConnection 라이브러리 : rest api 호출을 위한 자바 내부 라이브러리 java.net 에 존재한다.
테스트 데이터 : test json 검색어로 검색포털을 검색하면 데이터를 얻을 수 있다.
코드작성
HttpUrlConnection 을 get 방식으로 호출을 해 보았다면 그렇게 어려운 것이 없으며, 변경된 코드가 있는지 조차 구분이 되지 않는다.
차이가 있다면 setRequestMethod 부분이 Get 이 아닌 Post 로 지정되어 있음을 알 수 있다.
이것은 Post 형태로 지정한 url 에 데이터를 요청하려는 것이다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class RestApi_HttpURLConnection_Post_JavaTest {
public static void main(String[] args) {
System.out.println("\n");
System.out.println(" 시작 : HttpURLConnection사용 Post방식 Rest API 테스트 -----");
//--------------------------------------------------
try {
StringBuilder vStringBuilder = new StringBuilder();
String vStringLine;
URL vURL = new URL("https://reqres.in/api/users");
HttpURLConnection vHttpURLConnection = (HttpURLConnection) vURL.openConnection();
vHttpURLConnection.setConnectTimeout(5000);
vHttpURLConnection.setReadTimeout(5000);
vHttpURLConnection.setRequestProperty("User-Agent", "Mozilla/4.0");
vHttpURLConnection.addRequestProperty("", "");
vHttpURLConnection.setRequestMethod("POST");
vHttpURLConnection.setDoOutput(true);
if (vHttpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader vBufferedReader = new BufferedReader(
new InputStreamReader(vHttpURLConnection.getInputStream(), "utf-8")
);
while ((vStringLine = vBufferedReader.readLine()) != null) {
vStringBuilder.append(vStringLine).append("\n");
}
vBufferedReader.close();
System.out.println("\n");
System.out.println("요청 성공");
System.out.println("\t" + vHttpURLConnection.getResponseCode());
System.out.println("\t" + vHttpURLConnection.getResponseMessage());
System.out.println("\t" + vStringBuilder.toString());
} else if (vHttpURLConnection.getResponseCode() == HttpURLConnection.HTTP_CREATED) {
System.out.println("\n");
System.out.println("요청 성공");
System.out.println("\t" + vHttpURLConnection.getResponseCode());
System.out.println("\t" + vHttpURLConnection.getResponseMessage());
System.out.println("\t" + vStringBuilder.toString());
}
} catch (Exception e){
System.err.println("ex : " + e.toString());
}
//--------------------------------------------------
System.out.println("\n");
System.out.println("종료 : HttpURLConnection사용 Post방식 Rest API 테스트 -----");
}
}
복잡해 보이지만, 별 것 없다.
의미없는 출력문을 제거하면 중요한 부분이 어떤 것인지 잘 볼 수 있다.
HttpClient 를 주로 사용하는 사람이라면 확연히 알 수도 있다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class RestApi_HttpURLConnection_Post_JavaTest {
public static void main(String[] args) {
System.out.println("\n");
System.out.println(" 시작 : HttpURLConnection사용 Post방식 Rest API 테스트 -----");
//--------------------------------------------------
try {
StringBuilder vStringBuilder = new StringBuilder();
String vStringLine;
URL vURL = new URL("https://reqres.in/api/users");
HttpURLConnection vHttpURLConnection = (HttpURLConnection) vURL.openConnection();
vHttpURLConnection.setConnectTimeout(5000);
vHttpURLConnection.setReadTimeout(5000);
vHttpURLConnection.setRequestProperty("User-Agent", "Mozilla/4.0");
vHttpURLConnection.addRequestProperty("", "");
vHttpURLConnection.setRequestMethod("POST");
vHttpURLConnection.setDoOutput(true);
if (vHttpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader vBufferedReader = new BufferedReader(
new InputStreamReader(vHttpURLConnection.getInputStream(), "utf-8")
);
while ((vStringLine = vBufferedReader.readLine()) != null) {
vStringBuilder.append(vStringLine).append("\n");
}
vBufferedReader.close();
} else if (vHttpURLConnection.getResponseCode() == HttpURLConnection.HTTP_CREATED) {
}
} catch (Exception e){
}
//--------------------------------------------------
System.out.println("\n");
System.out.println("종료 : HttpURLConnection사용 Post방식 Rest API 테스트 -----");
}
}
이전에 사용한 get 방식 호출과 다를 것이 없다.
get 방식과 post 방식에 대한 이해가 있다면 적절히 혼합해서 사용하면 된다.
현재, 가장 많이 사용되는 구조이기도 하며, 이것들을 가지고 별도의 클래스로 만들어 사용하면 꾸준하게 사용할 수 있다.
이것만을 가지고도 rest api 를 제공하는 많은 웹서비스를 만들 수 있는 것은 확실하지만, 기술은 계속 발전하기에 간단한 코드라도 생각나면 한번쯤 검색을 해보도록 하자.
다른 형태의 간단하고 속도빠른 코드들을 발견할 수도 있을 것이다.
'programming > SpringJava' 카테고리의 다른 글
자바 프로젝트를 메이븐 프로젝트 변환하기 How to convert Java Project to Maven Project (0) | 2021.03.19 |
---|---|
자바 현재 날짜와 시간 표시 형식 지정하기 (0) | 2021.03.14 |
rest api httpurlconnection 사용 get 호출 자바로 만들고 테스트 하기 (0) | 2021.03.12 |
rest api httpclient 사용 post 호출 자바로 만들고 테스트 하기 (0) | 2021.03.11 |
rest api get 방식 자바로 만들기 테스트 하기 (0) | 2021.03.10 |
댓글