Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 1차원 DP
- 2차원 dp
- 99클럽
- @GeneratedValue
- @GenericGenerator
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Callback
- case when
- CCW
- chat GPT
- CICD
- Collections
- Combination
- combinations
- Comparator
Archives
- Today
- Total
기록
[issue] 공공데이터 api connectError 본문
개요
앱을 시작하면 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) 에서 미리 저장해 둔다면, 공공데이터 통신에 문제가 생기더라도 데이터를 전송해 줄 수 있을 것이라 생각했다.
'Moblie > Android' 카테고리의 다른 글
Androidstudio/kotlin/멀티뷰타입 리사이클러뷰 응용 (0) | 2022.08.10 |
---|---|
AndroidStudio/kotlin/Enum을 이용한 fragment 재활용 (0) | 2022.07.22 |
AndroidStudio/XML의 글꼴 적용하기 (0) | 2022.07.12 |
AndroidStudio/kotlin/Custom Exception (0) | 2022.07.10 |
AndroidStudio/kotlin/callback 패턴의 적용 (0) | 2022.06.21 |
Comments