본문 바로가기

Programming/Java/JSP

HttpURLConnection을 이용한 POST연동방식


HttpURLConnection을 이용해서 통신프로그램을 작성하던중... POST방식을 네이버 검색해보니 일부 블로그에서
파라미터를 아래와 같은 방식 처리하는 예제가 있었다.

String param = "xx="+xx+"&xxx="+xxx+"&xxxx="+xxxx;

URL targetURL = new URL(http://xxx.xxx.xxx.xxx/xxx/xxx.html);


... 중략 ...

PrintWriter out = new PrintWriter(hurlc.getOutputStream());

out.println(param);

out.flush();

out.close();


해본 결과 PrintWriter 쓰면 안된다. (이것 때문에 또 삽질을....역시 네이버는 너무 믿으면 안된다 ㅡ_ㅡ;;;)
구글링을 해본결과 아래와 같이 OutputStream을 써야한다.

String param = "xx="+xx+"&xxx="+xxx+"&xxxx="+xxxx;

URL targetURL = new URL(http://xxx.xxx.xxx.xxx/xxx/xxx.xxx);

URLConnection urlConn = targetURL.openConnection();

HttpURLConnection hurlc = (HttpURLConnection) urlConn;

// 헤더값을 설정한다.

hurlc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// 전달 방식을 설정한다. POST or GET, 기본값은 GET 이다.
hurlc.setRequestMethod(
"POST");
// 서버로 데이터를 전송할 수 있도록 한다. GET방식이면 사용될 일이 없으나, true로
// 설정하면 자동으로 POST로 설정된다. 기본값은 false이다.

hurlc.setDoOutput(
true);
// 서버로부터 메세지를 받을 수 있도록 한다. 기본값은 true이다.
hurlc.setDoInput(
true);
hurlc.setUseCaches(
false);

hurlc.setDefaultUseCaches(false);


//안됨...                   

//PrintWriter out = new PrintWriter(hurlc.getOutputStream());

//out.println(param);

//out.flush();

//out.close();

                   

OutputStream opstrm = hurlc.getOutputStream();

opstrm.write(param.getBytes());

opstrm.flush();

opstrm.close();

                   

String buffer = null;

BufferedReader in = new BufferedReader(new InputStreamReader
                    (hurlc.getInputStream()));

while ((buffer = in.readLine()) != null) {

  ecgResultXML += buffer;

}

in.close();