ETC/무더위 쉼터

공공데이터 API 사용 개발

[ 관련 포스팅 ]

2019/06/03 - [앱 개발/무더위 쉼터] - 공공데이터 + Google Map API Android 어플리케이션(1)

2019/06/04 - [앱 개발/무더위 쉼터] - 공공데이터 + Google Map API Android 어플리케이션(2)

2019/06/04 - [앱 개발/무더위 쉼터] - 공공데이터 + Google Map API Android 어플리케이션(3)

 

전의 포스팅에서는 공공데이터포탈에서 데이터를 받아 페키지에 넣어 APP을 만들었다면 이번에는 공공데이터포탈에서 API를 발급 받고 인터넷으로 데이터를 가져와 사용하는 방법을 알아보려고 합니다.

 

먼저 공공데이터포탈에 접속해 로그인을 합니다.

https://www.data.go.kr/

 

공공데이터포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Dataset)와 Open API로 제공하는 사이트입니다.

www.data.go.kr

 

상단 매뉴에 보면 데이터셋 메뉴가 보이는데 그 중 오픈 API를 선택하고 사용하고 싶은 데이터를 검색합니다.

 

 

데이터를 찾아 활용신청을 클릭하고 신청서를 작성합니다.

작성 완료 후 심의가 자동승인 이라면 별도의 절차 없이 바로 API사용이 가능합니다.

 

마이페이지에 > API매뉴에 들어가면 발급받은 API의 목록이 있고 사용할 API를 선택해 들어가면 인증키 발급 버튼이 있습니다. 인증키를 발급해 주세요.

 

발급받은 API가 잘 작동하는지 확인을 하기 위해 상세기능정보 > 미리보기 다운로드 > 실행 버튼을 눌러줍니다.

 

 

맨 아래의 미리보기 버튼을 누르면 새로운 페이지가 열리고 샘플 데이터가 XML형식으로 보여집니다.

 

이 페이지의 URL을 보면 

 


http://api.data.go.kr/openapi/heat-wve-shltr-std?serviceKey=YOUR_KYE&pageNo=1&numOfRows=100&type=xml&shltrNm=%EA%B0%80%EB%8A%A51%EB%8F%99%EC%A3%BC%EB%AF%BC%EC%84%BC%ED%84%B0&legaldongNm=%EA%B2%BD%EA%B8%B0%EB%8F%84%20%EC%9D%98%EC%A0%95%EB%B6%80%EC%8B%9C%20%EA%B0%80%EB%8A%A5%EB%8F%99&shltrType=%EC%A3%BC%EB%AF%BC%EC%84%BC%ED%84%B0&operOpenDate=2018-05-15&operCloseDate=2018-09-30&fcltyAr=148.62&aceptncPosblCo=37&arcndtnHoldCo=1&nightExtnYn=N&wkendUseYn=N&stayngYn=N&rdnmadr=%EA%B2%BD%EA%B8%B0%EB%8F%84%20%EC%9D%98%EC%A0%95%EB%B6%80%EC%8B%9C%20%EC%8B%A0%EC%B4%8C%EB%A1%9C%2035&lnmadr=%EA%B2%BD%EA%B8%B0%EB%8F%84%20%EC%9D%98%EC%A0%95%EB%B6%80%EC%8B%9C%20%EA%B0%80%EB%8A%A5%EB%8F%99%20617-8&institutionNm=%EA%B2%BD%EA%B8%B0%EB%8F%84%20%EC%9D%98%EC%A0%95%EB%B6%80%EC%8B%9C%EC%B2%AD&phoneNumber=031-828-4964&latitude=37.7505077&hardness=127.0208304&referenceDate=2018-06-01&insttCode=3820000


이러한 형식으로 되어있을 탠데, YOUR_KYE 부분에는 발급받은 자신의 키가 들어가 있습니다.

 

serviceKey 다음의 부분은 옵션을 주는 부분으로 API 발급 페이지에 안내되어있는 옵션을 사용하여 원하는 데이터를 받아올 수 있습니다.

 

AIP를 사용해 데이터를 받아오기 위해서는 인터넷 허가가 되어 있어야 합니다.

AndroidMainfest에 인터넷 사용을 위한 코드를 추가해 주세요.

 

<uses-permission android:name="android.permission.INTERNET" />

 

인터넷 URL을 통해 데이터를 가져와야 함으로 URL을 선언해 데이터를 가져올 준비를 합니다.

 

URL url = new URL("http://api.data.go.kr/openapi/heat-wve-shltr-std?serviceKey=YOUR_KEY&pageNo=1");

 

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xpp = factory.newPullParser();

 

XmlPullParserFactory과 XmlPullParser를 이용해 객체를 반환 받아 데이터 파싱을 진행합니다.

 

int eventType = xpp.getEventType();

while (eventType != XmlPullParser.END_DOCUMENT) {
  switch (eventType) {
    case XmlPullParser.START_DOCUMENT:
      buffer.append("파싱 시작\n\n");
      break;

    case XmlPullParser.START_TAG:
      tagname = xpp.getName();

      if (tagname.equals("item")) ;
        else if (tagname.equals("rdnmadr")) {
        buffer.append("소재지도로명주소 :");
        xpp.next();
        buffer.append(tagname.getText()+"\n");
        .
        .
        .

 

데이터를 받아오는데는 성공했는데 속도가 느린것 같아 확인을 해 보았습니다.

 

500개의 데이터를 가져올때 너무 많이 가져와서 느린건가 싶어 200개, 20개의 데이터로 확인을 해 보았는데 최소 0.3초부터 13초까지 소요되는것을 확인했습니다.

 

처음 13초 정도가 걸리고 바로 데이터를 가져오면 1초 이내의 시간이 소요되지만 약 5초정도 후에 다시 요청한다면 다시 13초의 시간이 소요됩니다.

 

 

혹시 전에 제작한 데이터를 넣어서 만든 APP은 얼마나 걸리까 해서 확인해 보았는데 이쪽은 모두 1초를 넘지 않네요.

 

API작업은 데이터를 가져올 때 생각 외로 시간이 좀 걸리다는 점이 걸려 개발을 중단하기로 했습니다.

 

 

[ 관련 포스팅 ]

2019/06/03 - [앱 개발/무더위 쉼터] - 공공데이터 + Google Map API Android 어플리케이션(1)

2019/06/04 - [앱 개발/무더위 쉼터] - 공공데이터 + Google Map API Android 어플리케이션(2)

2019/06/04 - [앱 개발/무더위 쉼터] - 공공데이터 + Google Map API Android 어플리케이션(3)

728x90