본문 바로가기

Etc/Android

[Android]공공데이터 '민방위 대피소정보 서비스' API 파싱하기

728x90
반응형
 

[Android] T-Map API을 사용하여 지도 띄워보기

[👨‍🎓학교 수업👨‍🎓/[3-2]Android] - [Android] 자바로 안드로이드 앱 다음 지도 API사용하여 지도 띄워보기 [Android] 자바로 안드로이드 앱 다음 지도 API사용하여 지도 띄워보기 다음지도 API 키 발..

sungmin.dev

 

[Android] 자바로 안드로이드 앱 다음 지도 API사용하여 지도 띄워보기

다음지도 API 키 발급 1. 지도 API을 발급 받기 위해서는 Kakao Developers(https://developers.kakao.com/)사이트에 방문하여 개발자 등록을 한후 앱 등록을 하여야 한다. 2. 앱 SDK을 사용하기위해서는 플랫폼..

sungmin.dev

최근 공공데이터를 활용한 앱 경진대회 및 아이디어 경진대회가 많이 개최되고, 각 시도청에서도 공공데이터를 많이 활성화 하기 위해 공공데이터를 개방하고 있다.

현재 나 역시도  충남도청 공공데이터 서포터즈 1기로 활동을 하면서 2019년 3학년 2학기 캡스톤디자인 과목인 모바일 프로그래밍 과목에
공공데이터를 활용하여 결과물을 만들기 위해 행정안전부(이하 행안부)에서 공개한 '민방위 대피소정보 서비스' 라는 공공데이터를 Android에 파싱하기 위해 검색도 많이 해보고 2주간 삽질한 결과를 기반으로 글을 쓰려고 한다.

해당 프로젝트는 Kotlin 언어가 아닌 Java 기반임을 먼저 밝히고 작성을 한다.

우선 공공데이터는 공공데이터포털에 접속하여 신청하고, 마이페이지에서 APP KEY등 기술 문서등을 확인 할 수 있다.

공공데이터 신청 화면

 

* 해당 기술 문서는 최신화가 안되어 있어서 End Point는 신청화면에 나오는 주소를 입력해야 파싱이 가능하다.

앱 신청이 완료 되면 안드로이드 프로젝트를 생성한다.

프로젝트를 생성 한후 

AndroidManifest.xml 파일에 아래와 같은 인터넷 권한을 넣어준다.

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

 

그 이후 activavity_main.xml 파일에 불러온 API 텍스트를 확인하기 위해 아래와 같이 TextView을 넣어준다.

 <TextView
 	android:id="@+id/result"
	android:layout_width="match_parent"
	android:layout_height="match_parent"/>

 

그 이후 MainActivity.java 파일을 열어 아래와 같이 코드를 작성해주면 파싱이 되는것을 확인 할 수 있다.

package dev.sungmin;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.StrictMode;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {
    String AppKey = "API Key"; //공공데이터포털에서 부여받은 API 키

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        StrictMode.enableDefaults();

        TextView status1 = (TextView) findViewById(R.id.result); //파싱된 결과확인!
        BufferedReader br = null;
        try{
            String urlstr = "http://apis.data.go.kr/1741000/CivilDefenseShelter2/getCivilDefenseShelterList?ServiceKey=" + AppKey;
            URL url = new URL(urlstr);
            HttpURLConnection urlconnection = (HttpURLConnection) url.openConnection();
            urlconnection.setRequestMethod("GET");
            br = new BufferedReader(new InputStreamReader(urlconnection.getInputStream(),"UTF-8"));
            String result = "";
            String line;
            while((line = br.readLine()) != null) {
                result = result + line + "\n";
            }
            status1.setText(result);
            System.out.println(result);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }
}

 

파싱된 결과

728x90
반응형


Calendar
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Visits
Today
Yesterday