본문 바로가기
안드로이드 자바

[Java][Android] 공공데이터 api 사용하기

by teamnova 2022. 3. 17.
728x90

안녕하세요 이번 포스팅은 공공데이터 포탈 api 사용방법을 알아보겠습니다
먼저 데이터 포털로 들어갑니다

 


https://www.data.go.kr/index.do
회원가입은 필수인 것 아시죠?
로그인 후 원하는 데이터를 검색하여봅니다.

상세 기능을 볼 수 있으며 해당 페이지에서 요청 변수를 확인해 주세요.
저희는 홈페이지에 나와있는 샘플 코드를 이용해 볼 거예요

활용신청을 눌러주세요

간단히 신청양식을 작성해 주세요


마이페이지를 들어가시면 신청한 데이터 이름이 뜹니다

 

클릭 시 상세 보기에서 부여된 인증키를 확인할 수 있습니다.
미리 보기 데이터가 제공되며 해당 url로 들어가면 제공되는 데이터를 확인할 수 있습니다.

 

Java

 

public class threeActivity extends AppCompatActivity {

    //변수 serviceKey에 인증키를 넣어줍니다
    String key = "Your key";
    TextView text;
    String string_data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_three);
        text=findViewById(R.id.text);



        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    string_data =data();
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                            text.setText(string_data);

                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();


    }


    String data() throws IOException {

        //각각의 정보를 넣어줍니다.
        StringBuilder urlBuilder = new StringBuilder("http://apis.data.go.kr/B550928/getLtcInsttDetailInfoService/getGeneralSttusDetailInfoItem"); /*URL*/
        urlBuilder.append("?" + URLEncoder.encode("serviceKey", "UTF-8") + "=" + key); /* Service Key */
        urlBuilder.append("&" + URLEncoder.encode("longTermAdminSym","UTF-8") + "=" + URLEncoder.encode("21130500195", "UTF-8")); /*장기요양기관코드*/
        urlBuilder.append("&" + URLEncoder.encode("adminPttnCd","UTF-8") + "=" + URLEncoder.encode("B03", "UTF-8")); /*공통항목 코드 정의 기관유형코드 정의 참조*/
        URL url = new URL(urlBuilder.toString());
        //문자열로 된 요청 url을 URL 객체로 생성.
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Content-type", "application/json");

        BufferedReader rd;
        //getResponseCode가 200이상 300이하일때는 정상적으로 작동

        if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
            rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        } else {
            rd = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
        }
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = rd.readLine()) != null) {
            sb.append(line);
        }
        rd.close();
        conn.disconnect();
        System.out.println(sb.toString());
    return sb.toString(); }
}

 

XML

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".threeActivity">

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

</LinearLayout>

 

실행결과 

 

감사합니다.