본문 바로가기
Kotlin

[Kotlin] Kotlin + Retrofit 통신

by 신입같은 3년차 2019. 6. 26.
728x90

Kotlin + Retrofit으로 통신을 구현해보았습니다 . 

 

일단 빈 Android Project를 만들고 

build.gradle(Module:app) 에 다음 dependencies에 추가해 줍니다 . 

 

 

implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'

 

그다음 간단하게 통신을 확인하기 위해 MainActivity에 Retrofit코드를 추가해보겠습니다.

 

 

val retrofit = Retrofit.Builder().baseUrl("http://localhost:3000")
		.addConverterFactory(GsonConverterFactory.create()).build();
val service = retrofit.create(RetrofitNetwork::class.java);

service.listUser()?.enqueue(object : Callback<Array>{

	override fun onFailure(call: Call<Array>?, t: Throwable?) {}
        override fun onResponse(call: Call<Array>, response: Response<Array>) {
    	Log.d("Response :: ", response?.body().toString())
        var data : Array? = response?.body()
	    for ( i in data!!){
            Log.i("data" , i.toString())
        }
    }
})

 

처음으로 하는일은 Retrofit 객체를 초기화하는 작업입니다 . BaseUrl 에는 호출할 서버의 IP를 적어주시면됩니다 . 

 

서버에서 데이터를 JSON으로 돌려주기 때문에 GsonConverterFactory.create()를 통하여 JSON으로 변환해주는 컨버터도 추가해주고 build()를 통해 생성합니다.

 

이제 통신을 하기 위한 Method Interface 를 정의합니다 . 

 

interface RetrofitNetwork {

    @GET("/network")
    fun listUser() : Call<Array>
}

 

저는 제서버로부터 데이터를 돌려받기 때문에 http://localhost:3000/network 경로로 접근시데이터를 돌려주도록 세팅되어있습니다. 

 

서버로 부터 돌려받는 데이터

돌려 받는 하나의 row에는 id , name , createdAt , updatedAt 이 포함되어있습니다.

 

따라서 데이터VO를 만들도록 하겠습니다 .

 

UserVO.kt 파일로 data class를 생성하였습니다 .

 

data class UserVO (var id : Int , var name: String , var createdAt : String , var updatedAt : Boolean)

 

그다음 service.interfaceMethodName()을 호출하여 onResponse와 onFailure를 overriding하여 onResponse쪽에서 하고자 하는 작업을 구현해주시면됩니다 . 

 

마지막으로 통신을 하기때문에 AndroidManifest.xml에 Internet 을 사용하도록 하는 퍼미션을 추가해주시면 됩니다 .

 

<uses-permission android:name="android.permission.INTERNET" />

 

728x90
반응형

'Kotlin' 카테고리의 다른 글

[Kotlin] permitted by network security policy  (0) 2019.06.27
[Kotlin] Data Classes  (0) 2019.06.19
[Kotlin] 상속  (0) 2019.06.19
[Kotlin] class 의 활용 및 개념  (0) 2019.06.19
[Kotlin] Package , Return and Jumps  (0) 2019.06.19

댓글