티스토리 뷰
Android에서 구성한 Rest API 통신이 정상적으로 동작하는지 궁금할 때가 많습니다.
대부분의 사람들은 Application Debugging 또는 PostMan을 활용하여 HTTP 통신이 정상으로 이뤄졌는지 확인 합니다.
만약 환경이 Application Debugging 또는 PostMan 으로 HTTP 통신을 확인 못한다면 어떻게 확인할 수 있을까요?
이런 문제점을 Chuck Library 로 해결할 수 있습니다.
Chuck Libray란?
Chuck Library 는 인-앱 Android OkHttp Clients의 간단한 인앱 HTTP 관찰하는 라이브러리 입니다.
인앱? HTTP 관찰? 처음에는 이해하기 어려웠습니다.
좀 더 풀어서 정리하면 HTTP 통신을 앱에서 할 경우 Chuck Library는 HTTP 통신에 대한 결과를 Ok Http Clients 로 Catch 하여 사용자 정보(HTTP 전송 성공 유무, 전송 시간, request, response )를 제공합니다.
Chuck 사용법
사용하는 방법은 간단합니다.
먼저 build.gradle 에서 dependency을 추가합니다. no-op 을 통하여 release 빌드와 debug 빌드를 구분합니다.
dependencies {
debugCompile 'com.readystatesoftware.chuck:library:1.1.0'
releaseCompile 'com.readystatesoftware.chuck:library-no-op:1.1.0'
}
no-op로 구분하는 이유release build 에서는 Chuck 라이브러리 동작을 안하게 됩니다.
다음은 OkHttpClient에 ChuckInterceptor을 추가하는 소스코드를 작성합니다.
java
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new ChuckInterceptor(context))
.build();kotlin
var client:OkHttpClient = OkHttpClient.Builder()
.addInterceptor(ChuckInterceptor(context))
.build()OKHttpClient에 addInterceptor 에 ChuckInterceptor()을 추가하면 됩니다.
Restrofit 을 사용하신다면 Restrofit.client()에 방금 생성한 client을 넣어주면 됩니다.
Kotlin
val retrofit = Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(
GsonConverterFactory.create(GsonBuilder().serializeNulls().create()))
.baseUrl(LogBaseURL)
.client(getClient(context)) // AddInterceptor로 생성한 Client
.build()Application에서 retrofit HTTP 통신을 하면 Notification으로 HTTP 통신 성공 여부를 보여줍니다.
Notification에 접속하면 상세한 HTTP 통신 여부, request, response 에 대한 내용을 보여줍니다.
Chuck Library 더 활용하기
Chuck Library 에서도 사용자가 옵션을 주어 제어를 할 수 있습니다.
showNotificationChuck에 대한 Notification을 보여줄 것인지 설정합니다. (기본값 : True)
maxContentLengthChuck에 저장되는 Content 길이를 설정합니다. (기본값: 250000L )
retainDataForChuck에 저장되는 기간을 설정합니다. (기본값 : 1주)
/** Retain data for the last hour. */
ONE_HOUR,
/** Retain data for the last day. */
ONE_DAY,
/** Retain data for the last week. */
ONE_WEEK,
/** Retain data forever. */
FOREVER
Kotlin
fun getClient(context: Context) : OkHttpClient {
var client:OkHttpClient = OkHttpClient.Builder()
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.connectTimeout(30, TimeUnit.SECONDS)
.addInterceptor(ChuckInterceptor(context)
.showNotification(false)
.maxContentLength(100)
.retainDataFor(ChuckInterceptor.Period.ONE_HOUR))
.build()
return client
}정리
Chuck Library 에 대해서 알아봤습니다.
인앱으로 HTTP 디버깅 할때에는 유용하게 사용될 수있는 Chuck Library는 개발하는데 유용하게 사용될 것으로 예상됩니다.
'프로그래밍 > Android' 카테고리의 다른 글
| Android 인앱 결제 알아보자 (21) | 2018.10.12 |
|---|---|
| Android FCM (Firebase Cloud Messaging) 구현해보자 (5) | 2018.08.23 |
| Android RXJava 을 활용한 Variable Overable 만들기 (0) | 2018.07.26 |
| Android Dagger 활용하기 (0) | 2018.07.20 |
| Dagger 간단히 알아보기 (0) | 2018.07.18 |
- issue
- java
- swift
- Android Studio
- Kotlin
- flutter
- IOS
- MCC
- 패턴
- 고시문헬퍼
- 고시문
- 안드로이드
- 디자인패턴
- 미션차이나센터
- Android
- missionchina
- 알고리즘
- DI
- view
- 임용고시
- missioon
- 탁구
- 코틀린
- RXjava
- push
- 선교
- 스코어헬퍼
- 점수판
- IT
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |