일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- error
- 의존성주입
- viewpager
- MVVM
- Kotlin
- 레트로핏
- ADB
- 코틀린
- dart
- 에러
- Github
- coroutine
- 웹뷰
- GIT
- 안드로이드
- 안드로이드 스튜디오
- Retrofit
- WebView
- 유튜브
- image
- 깃헙
- 코루틴
- Android
- studio
- Gradle
- 안드로이드스튜디오
- 스튜디오
- 안스
- RecyclerView
- build
- Today
- Total
목록Retrofit (6)
코딩하는 일용직 노동자
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bGXGMv/btrH1azO93J/VnF028keOtUWNOz1TjQsfk/img.png)
아주 기초적인 Retrofit2 사용법을 https://jsonplaceholder.typicode.com/posts 를 이용해 테스트해보는 방법을 알아보겠습니다. #기본 셋팅 Retrofit2를 사용하기 위해 gradle에 의존성 주입을 해줍니다. Manifest 파일에 인터넷 퍼미션을 추가해줍니다. // 의존성 추가 implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' Manifest파일에 네트워크 기능을 이용하기 위한 퍼미션을 추가해줍니다. #RetrofitClient.kt BaseUrl 과 json 처리를 위한 GsonConverterFactor..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dCPz3T/btrzQYs83aJ/b4RvK0ptiKTKvvu7Vdlwvk/img.png)
안드로이드에서 주로 Retrofit2 를 이용해 네트워크를 구현하게 됩니다. 이때, API의 호출결과로 정상적이라면 200이 내려올것이고, 정상적이지 않다면 400, 404, 406, 500 등 다양한 Response가 올 수 있습니다. Response 처리를 도와주는 라이브러리가 있어서 소개합니다. Sandwich는 Retrofit Response를 모델링하고 예외를 처리하기 위한 API 라이브러리입니다. https://github.com/skydoves/sandwich GitHub - skydoves/sandwich: 🥪 A lightweight sealed API library for modeling Retrofit responses and handling exceptions. 🥪 A lightwe..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dqefE0/btqNVTzL0IW/buUUQp9MjCfYUmRlXGlwj0/img.png)
기존에 잘되던 앱에서 Retrofit으로 api를 호출하면 아래의 오류가 발생했다. Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $ 구글에 검색을 해보니 GsonConverterFactory.create() 안에 GsonBuilder를 객체를 만들어 넣어주면 해결되는 문제였다. 나말고도 이런 오류를 경험한 사람이 많은가보다. https://stackoverflow.com/questions/39918814/use-jsonreader-setlenienttrue-to-accept-malformed-json-at-line-1-column-1-path Use JsonReader.setLenient(true) to ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b7N56f/btqDQcC46Jh/mTh0PEujhBmK6CQzROk6m1/img.png)
SSL 적용된 서버 접속하기 위한 소스. SSL 처리를 무시하는 소스이다. // TI2 val socketFactory = SSLContext.getInstance("SSL").let { sslContext -> val trustAllCerts = arrayOf(object : X509TrustManager { override fun getAcceptedIssuers(): Array? = emptyArray() override fun checkClientTrusted(certs: Array, authType: String) = Unit override fun checkServerTrusted(certs: Array, authType: String) = Unit }) sslContext.init(null,..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cVeduC/btqEozYLWNq/DCnzmjzSfOcgYFSjvN6Qq0/img.png)
#1 API 호출 및 파싱. 우선 api 호출 후 결과를 저장할 모델 클래스를 만듭니다. 포스트맨 에서 얻어낸 결과 json 을 이용해 안드로이드 스튜디오에서 DTO generator 플러그인을 이용해 편하게 만들었습니다. hits 를 MutableList 형태로 받도록 수정해줬습니다. #2 API 호출 콜백. MVVM구조에서 ViewModel은 자신을 사용하는 View를 몰라야 합니다. 안드로이드 개발문서에서도 ViewModel에 View references에 대한 참조가 없어야 한다고 강조합니다. 때문에 ViewModel에서 View로 이벤트나 결과를 전달해야 할 경우에는 View가 ViewModel을 observe하다가 상태가 변하면 그에 맞는 처리를 하게 했습니다. api 호출 후 결과를 리턴시키..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/q5eBa/btqDQThqsm3/E87bpXOuDdwgMLECdKDrr0/img.png)
#1 인트로 화면과 메인화면 만들기 우선 앱이 실행되면 인트로화면을 몇초 보여준후 홈화면으로 이동하는 형태로 만들었습니다. IntroActivity 와 MainActivity 로 만들고 홈화면은 Fragment 를 포함하도록 만들었습니다. 그리고 서브화면들을 만들고 각 화면마다 별도의 ViewModel 을 만들었습니다. (일단 쓸지 안쓸지는 모르겠지만 다 만들어줬습니다.) #2 Base 클래스, MyApplication 만들기. 각 액티비티와 뷰모델이 상속받아 쓰도록 BaseActivity, BaseViewModel 클래스를 만들었습니다. Retrofit2 와 Koin 을 셋팅하기 위해서 MyApplication 클래스를 만들고 ViewModel 셋팅도 해줍니다. SharedPreference 를 편하게..