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" />
'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 |
댓글