hanker

JAVA - HttpUrlConnection, HttpsUrlConnection (httpMethod GET, POST) (1) 본문

JAVA

JAVA - HttpUrlConnection, HttpsUrlConnection (httpMethod GET, POST) (1)

hanker 2024. 9. 11. 23:22
반응형

이전에 썻던 내용인데 Url Connection 하여 데이터 송수신 할 경우에, GET방식으로 보낼지 POST 방식으로 보낼지 설정한다.

 

대부분 API에서 어떤 방식으로 보내라고 설명되어있는데, 대표적인 GET/POST 방식을 살펴보자.

 

요청 받는 API를 만들어보자

    @RequestMapping("/test")
    public Map<String, Object> test(@RequestParam Map<String, Object> params) {
        Map<String, Object> map = new HashMap<>();

        map.put("index", "1");
        map.put("name", params.get("name"));



        return map;
    }

해당 API 에서는 파라미터에서 name이라는 Key에 value값을 찾아서 map안에 name key값에 담아준다.

 

 

 

1. GET 방식

해당 방식은 URL에 요청파라미터가 포함되어있다. 

대게 파라미터를 서버에 전송하여 결과값을 받아낼 때 사용한다.

 public static void main(String[] args) throws Exception {
        try {
            // 요청할 URL (HTTP)
            URL url = new URL("http://127.0.0.1:2000/test?name=hanker");

            // HttpURLConnection 객체 생성
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            // 요청 방식 설정 (GET)
            connection.setRequestMethod("GET");

            // 응답 코드 확인
            int responseCode = connection.getResponseCode();
            System.out.println("Response Code : " + responseCode);

            // 응답 데이터를 읽음
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            // 결과 출력
            System.out.println("Response : " + response.toString());

        } catch (Exception e) {
            e.printStackTrace();
        }
}

Get 방식으로 Url에 해당 name=hanker라는 파라미터를 담아서 넘겼다.

 

결과 : 

API에서 반환된 값이 정상적으로 잘 넘어온것이 확인된다.

 

 

 

2. POST 방식

해당 방식은 URL에서는 보이지 않고 요청 본문에 파라미터가 포함되서 들어간다.

대게 파라미터값을 저장/수정할 때 사용한다.

 public static void main(String[] args) throws Exception {
        try {
            // 요청할 URL (HTTP)
            URL url = new URL("http://127.0.0.1:2000/test");

            // HttpURLConnection 객체 생성
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            // 요청 방식 설정 (GET)
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);

            String urlParameters = "name=hanker";

            try (DataOutputStream os = new DataOutputStream(connection.getOutputStream())) {
                byte[] input = urlParameters.getBytes(StandardCharsets.UTF_8);
                os.write(input, 0, input.length);
            }

            // 응답 코드 확인
            int responseCode = connection.getResponseCode();

            System.out.println("Response Code : " + responseCode);

            // 응답 데이터를 읽음
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }

            in.close();

            // 결과 출력
            System.out.println("Response : " + response.toString());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

해당 요청을 보면 옵션이 추가가 되어있는데, connection.setDoOutput(true)설정을 추가해주고,

해당 요청 본문에 들어갈 파라미터값을 적어준다.

 

결과 : 

 

반응형

'JAVA' 카테고리의 다른 글

JAVA - Lambda (java 8)  (0) 2024.09.15
JAVA - stream  (1) 2024.09.13
JAVA - HttpUrlConnection, HttpsUrlConnection  (0) 2024.09.10
JAVA - HTML String값 특정 태그 변경  (1) 2024.09.07
JAVA - 단일 역슬래시, 역슬래시 뒤 숫자 없애기  (1) 2024.09.06