자바 URL과 URLConnection을 활용한 POST 방식 데이터 보내고 받기~

|



자바 URL과 URLConnection 클래스

자바에는 java.net.URL 클래스를 통해 URL 주소를 인식할 수 있으며, 프로토콜, 도메인, 포트, 경로 등을 지정할 수 있다.

URLConnection을 통해 자바에서 웹페이지에 접속하기 위해서는 URL 주소를 java.net.URL 클래스로 변경할 필요가 있다.  


다음 두 가지 방법으로 URL 클래스를 생성할 수 있는데, 일반적으로 문자열을 받아서 처리하는 2번째 방법을 많이 사용한다. 

URL url = new URL("http", "blog.acronym.co.kr", 80, "537");
URL url = new URL("http://blog.acronym.co.kr/537");


해당 URL에서 페이지 정보를 가져오기 위해서 다음과 같이 URLConnection을 사용한다. 

URLConnection conn = url.openConnection();


URL 클래스와 URLConnection 클래스를 사용할 때는 각각 MalformedURLException과 IOException을 처리해줘야 한다. 

기본적인 소스의 형태는 다음과 같다. 


자바에서 웹 페이지 가져오기

위에서 설명한 대로 해당 URL에 접속한 다음 웹 페이지의 HTML을 가져오면 된다. 

데이터를 읽어오기 위해 예전에는 BufferedReader 클래스를 사용했지만, 최근에는 Scanner 클래스를 더 많이 사용하는 편이다. 

Scanner 클래스는 데이터의 타입에 따라 읽어올 수 있다는 장점이 있지만 웹 페이지 읽는데는 큰 차이는 없다. 

BufferedReader의 예제는 많으므로 여기에서는 Scanner로 읽어보도록 하자. 


17-24 라인을 보면, scan.nextLine() 메소드로 해당 URL의 값을 한줄씩 읽어와서 화면에 다음과 같이 출력한다. 



자바에서 GET 방식으로 데이터 보내기

Get 방식은 URL에 다음과 같이 매개변수를 붙여넣으면 된다. 

http://www.word.pe.kr/url.php?name=mini&age=18&email=...


그래서 Get 방식으로 데이터 보내는 것은 앞의 웹 페이지 가져오는 부분에서 URL만 변경하면 된다. 

단, 웹으로 데이터를 전송하는 것이기 때문에 URLEncoder를 통해 인코딩을 한 후 전달하면 된다. 


14번째 줄과 16번째 줄만 변경되었으므로 확인하면 된다. 

그리고 웹에서 캐시를 사용하지 않도록 할 경우, 19번째 줄에 conn.setUseCache()메소드를 통해 false로 넣으면 된다. 


자바에서 POST 방식으로 데이터 보내기 

POST 방식으로 처리하기 위해서는 먼저 URLConnection 객체에 몇가지 설정을 해야 한다. 

먼저 setDoOutput() 메소드를 true로 설정해서 URL을 연결하고 데이터를 기록한다고 알려줘야 한다. 

그리고 나서 setRequestProperty() 메소드로 ContentType 등을 지정해준다. 


데이터를 쓰기 위해서는 DataOutputStream을 이용해 URLEncoding 된 문자열을 쓰면 된다. 

전체 소스를 살펴보자. 


최종 결과는 화면은 다음과 같다. 




Trackback 0 And Comment 1