기록

[issue] 공공데이터 api connectError 본문

Moblie/Android

[issue] 공공데이터 api connectError

youngyin 2022. 7. 18. 10:00

개요

앱을 시작하면 Progress Activity 에서 공공 데이터를 받아서, SQlite 에 저장하는 방식으로 프로젝트를 설계/개발했다.

어느 순간부터 데이터를 받아오던 중에 아래와 같은 오류가 발생했다. 저녁에 오류가 발생했는데, 당장 다음날 자정이 프로젝트 마감이라 어떻게든 해결해야 했다.

해결방법

우선, appname/app/src/main/res/raw/ 내에 파일 데이터를 xml 형태로 삽입했다.

raw 파일을 읽어 parsing 하도록 수정한다.

// 기존 url 방식
/*
String queryUrl = "https://apis.data.go.kr/...";
URL url = new URL(queryUrl);
InputStream is = url.openStream();
*/

// raw 파일 읽어오기
InputStream is = getResources().openRawResource(R.raw.xml01);

// read xml
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new InputStreamReader(is, "UTF-8"));

// ... parsing
// ... insert into sqlite

결론

위와 같은 해결 방법은 데이터가 변할 때마다, 앱을 새로 설치해야 한다는 단점이 있다. 그래서 새로운 해결 방법을 생각해보았다.

시간이 조금 더 있었다면, 공공데이터를 필요한 형태로 가공 한 후 제공하는 REST API를 만들어 보고 싶었다. 공공데이터의 응답 결과가 수시로 변하는 것이 아니기에 (2) 에서 미리 저장해 둔다면, 공공데이터 통신에 문제가 생기더라도 데이터를 전송해 줄 수 있을 것이라 생각했다.

Comments