Retrofit2를 활용한 Android 앱 개발
서비스 적용
이 포스팅에서는 Retrofit2를 사용하여 안드로이드 앱에서 네트워크 통신을 관리하는 방법을 알아보겠습니다. Retrofit2를 사용하면 편리한 API 호출과 응답 처리를 할 수 있으며, 효율적인 네트워크 통신을 구현할 수 있습니다.
1 RetrofitHelper 클래스 소개
RetrofitHelper
클래스는 Retrofit2를 활용하여 네트워크 통신을 관리하기 위한 Helper 클래스입니다. 이 클래스는 네트워크 통신 설정, 통신 타임아웃 설정, 로딩 표시 여부 설정, 응답 데이터 처리 여부 등을 관리합니다.
1-1 RetrofitHelper 클래스 초기화
class RetrofitHelper(private val mTranListener: OnTranListener?) : OnNetworkListener {
// 멤버 변수 및 초기화 코드
// ...
}
RetrofitHelper
클래스는 OnTranListener
를 구현하여 통신 결과를 콜백으로 받습니다. 또한 OnNetworkListener
를 구현하여 네트워크 응답 처리를 합니다.
1-2 통신 타임아웃 설정
fun setTimeOut(timeOut: Int) {
// 통신 타임아웃 설정 코드
// ...
}
setTimeOut
메서드를 사용하여 통신 타임아웃을 설정할 수 있습니다.
1-3 로딩 표시 여부 설정
fun setShowLoading(isShow: Boolean) {
// 로딩 표시 여부 설정 코드
// ...
}
setShowLoading
메서드를 사용하여 로딩 표시 여부를 설정할 수 있습니다.
1-4 통신 데이터 암호화 여부 설정
fun setEncryptData(isEncrypt: Boolean) {
// 통신 데이터 암호화 여부 설정 코드
// ...
}
setEncryptData
메서드를 사용하여 통신 데이터의 암호화 여부를 설정할 수 있습니다.
1-5 응답 데이터 처리 여부 설정
fun setBypassRes(isBypass: Boolean) {
// 응답 데이터 처리 여부 설정 코드
// ...
}
setBypassRes
메서드를 사용하여 응답 데이터를 처리하지 않고 전달할지 여부를 설정할 수 있습니다.
1-6 로딩 Dialog 표시 및 종료
fun showLoading(msg: String? = null) {
// 로딩 Dialog 표시 코드
// ...
}
fun hideLoading() {
// 로딩 Dialog 종료 코드
// ...
}
showLoading
메서드를 사용하여 로딩 Dialog를 표시하고, hideLoading
메서드를 사용하여 로딩 Dialog를 종료할 수 있습니다.
2 네트워크 요청 메서드
RetrofitHelper
클래스는 네트워크 요청 메서드를 제공하여 편리한 API 호출을 지원합니다.
2-1 네트워크 요청 메서드
fun requestData(tranCd: String, reqUrl: String, method: NetworkReqMethod) {
requestData(tranCd, reqUrl, method, null, null)
}
fun requestData(tranCd: String, reqUrl: String, method: NetworkReqMethod, options: Map<String, String>? = null) {
requestData(tranCd, reqUrl, method, options, null)
}
fun requestData(tranCd: String, reqUrl: String, method: NetworkReqMethod, body: RequestData? = null) {
requestData(tranCd, reqUrl, method, null, body)
}
fun requestData(tranCd: String, reqUrl: String, method: NetworkReqMethod, options: Map<String, String>? = null, body: RequestData? = null) {
showLoading()
runBlocking {
mRetrofitNetwork.request(tranCd, reqUrl, method, options, body)
}
}
`requestData` 메서드들은 네트워크 요청을 수행하는 메서드입니다. 각 메서드는 다양한 파라미터를 통해 API 호출을 지원하며, 통신을 시작하기 전에 로딩을 표시하고 결과를 처리합니다.
2-2 네트워크 응답 처리
override fun onNetworkResponse(tranCode: String?, any: Any?) {
// 네트워크 응답을 처리하는 코드
// ...
}
`onNetworkResponse` 메서드는 네트워크 응답을 처리하는 콜백입니다. 네트워크 응답 데이터를 받아 처리하고, 상황에 맞게 적절한 동작을 수행합니다.
2-3 네트워크 에러 처리
override fun onNetworkError(tranCode: String?, errCode: Int, any: Any?) {
// 네트워크 에러를 처리하는 코드
// ...
}
`onNetworkError` 메서드는 네트워크 에러를 처리하는 콜백입니다. 네트워크 통신 중 발생한 에러를 처리하고, 에러에 따른 적절한 동작을 수행합니다.
3 네트워크 리포지토리 생성
class NetworkRepository {
fun request(callback: OnTranListener) {
val helper = RetrofitHelper(callback)
// 네트워크 요청 처리
// ...
}
}
`NetworkRepository` 클래스는 네트워크 요청을 처리하기 위한 리포지토리입니다. `RetrofitHelper`를 생성하고, 네트워크 요청을 시작하여 API 호출 결과를 콜백으로 받습니다.
'Android' 카테고리의 다른 글
[라이브러리] Retrofit2(3) (0) | 2023.09.19 |
---|---|
[라이브러리] Retrofit2(2) (0) | 2023.08.11 |
[라이브러리] Retrofit2(1) (0) | 2023.08.11 |
[디자인패턴] MVVM 패턴(3) (0) | 2023.08.10 |
[디자인패턴] MVVM 패턴(2) (0) | 2023.08.10 |