🛠환경
윈도우 | 10 최신 |
Flutter | 3.10.6 |
Dart | 3.0.6 |
dio | ^4.0.0 |
DevTools | 2.23.1 |
상황
Flutter로 공공데이터를 불러오는 프로젝트를 진행하였는데, 데이터를 GET요청하는 부분에서 DioError가 발생했습니다.
https://www.data.go.kr/index.do
원인 분석
- Open API를 사용하는 방법에서의 오류가 있을 수 있습니다(주소, 서비스 키 입력에서의 오류).
- DioError라고 출력되었으므로 dio 라이브러리와 연관이 있을 가능성이 높습니다.
PostMan과 브라우저에서 GET요청을 보냈을 땐 잘 작동했으므로 1번의 문제는 아닐 것입니다.
구글링 했을 때 가장 많이 나오는 내용은 AndroidManifest.xml 파일에 다음 코드를 삽입하라는 내용입니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET"/> <!-- 이부분 삽입 -->
<uses-permission android:name="android.permission.INTERNET"/> 는 AVD(Android Virtual Device)에서 인터넷 사용을 허가하는 코드입니다.
하지만 여전히 Wifi에 X가 있고 인터넷이 연결되지 않습니다.
일단 dio 라이브러리의 문제가 아닌 AVD의 인터넷 연결 문제란 것을 알 수 있었습니다.
🔑해결
제어판으로 가서 <네트워크 상태 및 작업 보기>를 들어갑니다
위의 화면과 다를 경우 우측 상단 보기기준을 범주로 바꾸어 줍니다.
이더넷 2로 들어갑니다.
속성에 들어갑니다.
인터넷 프로토콜 버전 4(TCP/IPv4)를 더블 클릭 합니다.
다음 DNS 서버 주소 사용을 체크하고, 기본 설정 DNS 서버에 8.8.8.8 을 입력 후 확인을 누릅니다.
이제 모든 창을 닫고, AVD에 캐시 데이터가 있을 수 있기 때문에 AVD도 종료합니다.
안드로이드 스튜디오를 켜고 Device Manager에 들어가서 테스트 중인 가상 기기의 ... 버튼을 누르면
Wipe Data가 있는데 클릭해서 데이터를 지워줍니다.
이제 main.dart를 실행하면 데이터가 잘 받아와 지는 것을 확인할 수 있습니다.
저 같은 경우 공공 데이터의 Encoding 인증키를 사용했을 때 인증키 에러가 떠서 Decoding 인증키를 사용했더니 동작하네요. 사이트 상에서도 구동되는 키는 상용하라고 하니, 인증키 에러가 떴을 때 꼭 확인해 보시기 바랍니다.
'에러 해결' 카테고리의 다른 글
[mysql] Connetion RefusedError(Sequelize 설정) (2) | 2023.11.24 |
---|---|
os.system() 실행 경로에 띄어쓰기가 있어서 생기는 오류 (0) | 2023.08.16 |
pyside GUI 버튼 클릭 시 에러 없이 창이 꺼짐 (0) | 2023.07.28 |
SetProcessDpiAwarenessContext failed 에러 (0) | 2023.07.27 |
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed. 에러 (0) | 2023.01.15 |
댓글