티스토리 뷰
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 |
- 코틀린
- 임용고시
- IOS
- missionchina
- 선교
- issue
- push
- 안드로이드
- 스코어헬퍼
- DI
- 고시문헬퍼
- Kotlin
- RXjava
- IT
- Android
- 미션차이나센터
- 디자인패턴
- 고시문
- 알고리즘
- swift
- java
- 점수판
- Android Studio
- missioon
- view
- flutter
- 탁구
- 패턴
- MCC
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |