Android/Retrofit
Retrofit
${Harvey}
2022. 11. 22. 17:52
Retrofit은 서버와 클라이언트 간 http 통신을 위한 라이브러리이다.
즉, Android에서 http 통신을 할 수 있도록 해주는 친구이다.
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
build.gradle
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
// Simple Retrofit Ex
// https://jsonplaceholder.typicode.com/
// https://jsonplaceholder.typicode.com/posts
// https://jsonplaceholder.typicode.com/posts/2
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val api = RetrofitInstance.getInstance().create(MyApi::class.java)
api.getPost1().enqueue(object : Callback<Post> {
override fun onResponse(call: Call<Post>, response: Response<Post>) {
Log.d("API1", response.body().toString())
}
override fun onFailure(call: Call<Post>, t: Throwable) {
Log.d("API1", "fail")
}
})
api.getPostNumber(2).enqueue(object : Callback<Post> {
override fun onResponse(call: Call<Post>, response: Response<Post>) {
Log.d("API2", response.body().toString())
}
override fun onFailure(call: Call<Post>, t: Throwable) {
Log.d("API2", "fail")
}
})
}
}
RetrofitInstance.kt
object RetrofitInstance {
val BASE_URL = "https://jsonplaceholder.typicode.com/"
val client = Retrofit
.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
fun getInstance() : Retrofit {
return client
}
}
Post.kt
data class Post (
val userId : Int,
val id : Int,
val title : String,
val body : String
)
MyApi.kt
interface MyApi {
@GET("posts/1")
fun getPost1() : Call<Post>
@GET("posts/{number}")
fun getPostNumber(
@Path("number") number : Int
) : Call<Post>
}
결과:API로 받아온 정보 두개가 로그에 찍혔다.
