본문 바로가기

Android

[라이브러리] Retrofit2(4)

반응형

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