gnusraun

Java HttpURLConnection을 이용한 HTML 호출 본문

Backend/Java

Java HttpURLConnection을 이용한 HTML 호출

gnusraun 2023. 5. 14. 15:45
728x90

HttpURLConnection을 이용한 POST + paramter 입력으로 HTML 호출

 

 

:: HttpURL통신을 위한 HTTP_HTML 메소드 생성

/**
 * HTTP API 호출 주소, 파라미터, 메소드(GET, POST)
 * params은 반드시 LinkedHashMap으로 지정하여 전달 / 순서를 맞추기 위해 사용
 * ex) String addr1 = "주소입력";
 *	Map<String, Object> params1 = new LinkedHashMap<>();
 *	params1.put("params", "values");
 *	String met = "POST";
 *	String HTTP_HTML1 = HTTP_HTML_API(addr1, params1, met);
 * @param String url, Map<String, Object> params, String met
 * @return String html
 */
public static String HTTP_HTML(String addr, Map<String, Object> params, String met) throws Exception {

    String result = "";
    URL url = null;
    url = new URL(addr);

    StringBuilder postData = new StringBuilder();
    for(Map.Entry<String,Object> param : params.entrySet()) {
        if(postData.length() != 0) postData.append('&');
        postData.append(URLEncoder.encode(param.getKey(), "euc-kr"));
        postData.append('=');
        postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "euc-kr"));
    }

    byte[] postDataBytes = postData.toString().getBytes("euc-kr");

    HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
    conn.setDoOutput(true);
    conn.getOutputStream().write(postDataBytes); // POST 호출

    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "euc-kr"));

    String inputLine;
    while((inputLine = in.readLine()) != null) { // response 출력
        result += inputLine + "\n";
    }

    in.close();

    return result;
}

 

 

:: 호출방법

String addr = "https://www.naver.com";
Map<String, Object> params = new LinkedHashMap<>();	// 맵 순서를 고정하기 위해 LinkedHashMap 사용
params.put("key", "value");	// 전달할 파라미터 값
String met = "POST";		// GET or POST or ETC

String HTTP_HTML = HTTP_HTML(addr, params, met);

 

 

* 네이버 호출시 정상적으로 html이 반환됨

* 해당 소스를 사용하여 GET 또는 POST 등 메소드를 수정해서 사용

* HTML이 아닐 경우 String HTTP_HTML 변수를 활용하여 데이터 가공하기

 

 

출처 - https://nine01223.tistory.com/256

728x90

'Backend > Java' 카테고리의 다른 글

Java 특정 문자 사이 값 추출하기  (0) 2023.05.14
Java 기본 형변환  (0) 2023.05.13
Java isEmpty  (0) 2023.05.13