Moblie/Android
[issue] 공공데이터 api connectError
zyin
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) 에서 미리 저장해 둔다면, 공공데이터 통신에 문제가 생기더라도 데이터를 전송해 줄 수 있을 것이라 생각했다.