'Url'에 해당되는 글 3건

  1. 2015.05.27 자바 URL과 URLConnection을 활용한 POST 방식 데이터 보내고 받기~ (1)
  2. 2011.09.27 [Java] URLConnection으로 가져올 때 UTF8과 EUC-KR 구분하기
  3. 2011.08.25 SKT T-Store App 소개 바로가기 URI

자바 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
  1. 초보자 2016.08.29 00:09 address edit & del reply

    이렇게할경우 node.js express로 만든 서버에서 데이터를 받을수 있나요??

[Java] URLConnection으로 가져올 때 UTF8과 EUC-KR 구분하기

|



RSS 리더를 구현하거나 웹과 관련된 프로그램을 구성할 때, 
URL을 입력해서 해당 글을 가져오는 루틴이 필요한 경우가 종종 있습니다. 

이 경우, 항상 문제가 되는 것이 바로 인코딩 문제인데요.
웹사이트의 경우, 인코딩을 주로 UTF-8과 EUC-KR의 두 가지를 사용해서 처리하고 있습니다.

제가 처음 RSS 리더인 RSSNym을 개발할 때 사용한 방식은 먼저 해당 URL의 텍스트를 한번 읽어온 후 인코딩 정보를 검색했습니다. 
그래서 UTF-8인지 EUC-KR인지 확인하고, 인코딩을 설정해서 해당 URL의 글을 가져오는 방식을 사용했습니다.
어떤 인코딩으로 처리하든지 영문으로 된 텍스트는 깨지지 않는다는 점을 활용한 것이죠..

하지만 이 방식은 같은 URL을 두번씩 읽어오게 되므로 효율성에 문제가 있었습니다
그래서 헤더 정보만 읽어와서 인코딩을 파악하는 방식을 소개하고자 합니다. 
먼저 소스코드를 보시죠..
 

4번째 줄을 살펴보면 ContentType을 가져오는 부분이 있습니다. 
여기에 UTF-8인지 EUC-KR인지 정보가 포함되어 있는지를 확인하고 해당 인코딩으로 문서를 읽어오는 것입니다.

해당 URL을 두 번 읽어오는 무식(?)한 방법보다는 훨씬 나은 듯 하여 정리해서 올려봅니다. ^^ 

이왕 정리한 것 URL을 문자열로 주면 해당 HTML을 모두 읽어와서 리턴해주는 함수를 올립니다.
ContentType에 인코딩 정보가 없을 경우도 EUC-KR로 선정하도록 코딩했습니다.
 


그럼 즐프하시기 바랍니다. 



Trackback 0 And Comment 0

SKT T-Store App 소개 바로가기 URI

|



안드로이드 마켓을 바로가기 위한 안드로이드 폰에서의 URI 형태는 다음과 같습니다. 
id에 해당 어플의 패키지명을 적어주면 됩니다. 

market://details?id=com.tgrape.android.radar

T-Store에도 이런 기능이 필요할 것 같은데요. 
첨부한 파일을 보시면 두 가지 방식으로 처리할 수 있다고 되어 있습니다.

1. SKAF App인 T-Store MobileClient와 App의 collaboration 연동 규격
2. Web Browser 기반의 URI 연동 규격


첫번째 방법은 첨부 문서의 소스 코드를 참고하면 그리 어렵지 않게 구성할 수 있으니
여기에서는 두 번째 URI 규격에 대해서만 간단하게 정리해 볼께요.

기본적인 URI/URL 형태는 다음과 같습니다.

tstore://PRODUCT_VIEW/0000116581/0

0000116581은 App에 대한 PID로서 T-Store에서 쉽게 확인할 수 있습니다.
마지막에 있는 숫자는 이용 가능한 나이를 표시하는 거라고 하네요.
0 - 전체 이용가
1 - 12세 이용가
2 - 15세 이용가
4 - 청소년 사용불가

이외에도 검색 관련된 URI도 있으니 첨부 문서를 참고하시기 바랍니다.

첨부 문서는 T-Store 개발자 센터에서 가져온 자료입니다.
생각보다 이 자료를 찾는데 시간이 많이 걸리더라구요. 
많은 개발자들이 이용할 수 있도록 공유해 봅니다.

SKT_ShopClient_Android_App_연동규격서_20101010.pdf



Trackback 0 And Comment 0
prev | 1 | next