Retrofit이란?
Retrofit 은 서버와 클라이언트 간 http 통신을 위한 라이브러리입니다.
안드로이드에서 통신에 사용되는 코드들을 간편하게 사용할수 있게 하여
http요청과 JSON 형식의 데이터를 사용하는데 용이합니다.
레트로핏 사용 방법
mainfest 수정하기
<application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
레트로핏을 사용할 때 네트워크를 사용해야 하므로
위 코드를 mainfest에 적어 (uses-permition만) 네트워크 연결을 할 수 있게 합니다.
build.gradle
implementation 'com.squareup.retrofit2:retrofit:2.9.0' // 레트로핏
implementation 'com.squareup.retrofit2:converter-gson:2.9.0' // 역직렬화할 수 있게
build.gradle 파일에 위 코드를 추가합니다.
이 때 gson도 추가하는 이유는, 레트로핏은 요청을 보내는데 도와줄 뿐이지, JSON 데이터를 역직렬화 하는 것은 converter-gson이기 때문입니다.
실제 사용 코드
서비스 코드 작성
package com.example.retrofitstudy
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.Path
data class Product(val id: Int,
val title: String)
interface ProductService {
@GET("/products/{id}")
fun getProduct(@Path("id") id:Int) : Call<Product>
}
요청 보내기
ActivityMain
package com.example.retrofitstudy
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import retrofit2.*
import retrofit2.converter.gson.GsonConverterFactory
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val retrofit= Retrofit.Builder()
.baseUrl("https://dummyjson.com")
.addConverterFactory(GsonConverterFactory.create()) // Json데이터를 사용자가 정의한 Java 객채로 변환해주는 라이브러리
.build() //레트로핏 구현체 완성
val productService = retrofit.create(ProductService::class.java)
val call = productService.getProduct(1) // 요청을 할 수 있는 것
call.enqueue(object : Callback<Product> {
override fun onResponse(call: Call<Product>, response: Response<Product>) {
val body = response.body() as Product
body.let {
Log.d("mytag", it.toString())
}
}
// 실패 시 호출되는 메서드
override fun onFailure(call: Call<Product>, t: Throwable) {
Log.d("mytag", "실패")
}
}) // 비동기 요청
}
}
* 코드 설명 추가 예정
'IDE > Android Studio' 카테고리의 다른 글
[AndroidStudio][FireBase] SHA-1 디지털 지문 발급받기 / zsh: permission denied: ./gradlew 해결 (1) | 2023.10.16 |
---|---|
[Android Studio] 인텐트 알아보기 (0) | 2023.08.30 |
[AndroidStudio][Kotlin] WebView로 웹 페이지 안드로이드 앱으로 빌드하기 (0) | 2023.08.15 |
[AndroidStudio][Kotlin] 웹 뷰 에러 net::ERROR_CACHE_MISS, (0) | 2023.08.13 |
[AndroidStudio][Kotlin] EditText의 addTextChangedListener, TextWatcher, TextWatcherAdapter (0) | 2023.08.13 |