투케이2K

57. (spring/스프링) HttpURLConnection 사용해 http get 쿼리 파람 요청 실시 본문

Spring

57. (spring/스프링) HttpURLConnection 사용해 http get 쿼리 파람 요청 실시

투케이2K 2022. 6. 29. 17:55

[개발 환경 설정]

개발 툴 : inteli j

개발 언어 : spring

 

[소스 코드]

    // TODO [SEARCH FAST] : [HttpURLConnection 테스트]
    @GetMapping("/HTTP_CONNECTION")
    public String HTTP_CONNECTION(@RequestParam Map<String, String> param){
        System.out.println("\n");
        System.out.println("================================================");
        System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
        System.out.println("[METHOD] : "+String.valueOf("HTTP_CONNECTION"));
        System.out.println("[INPUT] : "+String.valueOf(param.toString()));
        System.out.println("================================================");
        System.out.println("\n");


        /**
         * // -----------------------------------------
         * [호출 방법]
         * // -----------------------------------------
         * 1. 호출 방식 : GET
         * // -----------------------------------------
         * 2. 호출 방법 : http://localhost:7000/HTTP_CONNECTION
         * // -----------------------------------------
         * 3. 리턴 데이터 : http 요청 리턴 데이터
         * // -----------------------------------------
         * */


        // [리턴 데이터 선언 실시]
        HashMap<String, Object> resultMap = new HashMap<String, Object>();


        // [URL 정보 설정 실시]
        String urlData = "http://jsonplaceholder.typicode.com/posts";


        // [쿼리 파람 데이터 정의 실시]
        Map<String, Object> paramData = new HashMap<>();
        paramData.put("userId", 1);
        paramData.put("id", 1);


        // [URL + 파라미터 결합 실시]
        urlData += "?" + C_Util.mapToUrlEncodeQueryString(paramData);


        // [리턴 데이터에 로그 삽입]
        resultMap.put("request", urlData);


        // [로직 처리 실시]
        try {

            // [http 설정]
            URL url = new URL(urlData);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(20000); // 리드 타임 아웃
            conn.setConnectTimeout(20000); // 커넥션 타임 아웃
            conn.setRequestMethod("GET"); // 전송 타입
            conn.setDoInput(true); // IN 설정
            conn.setDoOutput(true); // OUT 설정
            conn.addRequestProperty("Content-type", "application/x-www-form-urlencoded"); // 프로퍼티 설정


            // [http response 데이터 확인]
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            StringBuffer sb = new StringBuffer();
            String responseData = "";
            while ((responseData = br.readLine()) != null) {
                sb.append(responseData); //StringBuffer 에 응답받은 데이터 순차적으로 저장 실시
            }
            try {
                if (br != null) {
                    br.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }


            // [리턴 데이터에 삽입 실시]
            resultMap.put("responseCode", conn.getResponseCode());
            resultMap.put("responseBody", sb.toString());
        }
        catch (Exception e) {
            e.printStackTrace();

            // [에러 발생 시 map 에 추가 : 로그]
            resultMap.put("exception", String.valueOf(e.getMessage()));
        }


        // [로그 출력 실시]
        System.out.println("\n");
        System.out.println("================================================");
        System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
        System.out.println("[METHOD] : "+String.valueOf("REST_TAMPLATE"));
        System.out.println("[RETURN] : "+String.valueOf(resultMap.toString()));
        System.out.println("================================================");
        System.out.println("\n");


        // [Api 리턴 반환]
        return resultMap.toString();
    }
 

[결과 출력]

 

 

반응형
Comments