참고
레트로핏 (Retrofit) 이란? (Kotlin 으로 레트로핏 사용)
1. retrofit 의 뜻 안드로이드에서 retrofit 이 무엇인지 알아보기 전에, retrofit 이라는 단어의 사전적인 의미부터 알아보자. (1) 기존에 사용할 수 없었던 필요하다고 간주되는 새 부품이나 개조된 장
salix97.tistory.com
- Android에서 Networking 기능에 사용하는 코드 라이브러리.
- JSON 구조의 데이터를 쉽게 가져오고 업로드할 수 있다.
- app 수준 gradle에 라이브러리를 추가 및 sync한다.
- 처음 빌드(해당 url에는 name, age, intro를 갖는 json형태의 array이다)
val retrofit = Retrofit.Builder()
.baseUrl("http://mellowcode.org/")
.addConverterFactory(GsonConverterFactory.create())
.build()
- 통신을 위해서는 service Interface가 필요하다.
interface RetrofitService{
@GET("json/students/")
fun getStudentsList(): Call<ArrayList<PersonFromServer>>
@POST("json/students/")
fun createStudent(
@Body params : HashMap<String, Any>
): Call<PersonFromServer>
@POST("json/students/")
fun createStudentEasy(
@Body person : PersonFromServer
): Call<PersonFromServer>
}
- service interface 사용
val service = retrofit.create(RetrofitService::class.java)
- GET 요청
//GET요청
service.getStudentsList().enqueue(object : Callback<ArrayList<PersonFromServer>> {
override fun onResponse(
call: Call<ArrayList<PersonFromServer>>,
response: Response<ArrayList<PersonFromServer>>
) {
// isSuccessful타고 가면 200번대(성공)는 true가 return이 된다.
if (response.isSuccessful) {
val personList = response.body()
Log.d("retrofitt", "res : " + personList?.get(0)?.age)
val code = response.code()
Log.d("retrofitt", "code : " + code)
val error = response.errorBody()
Log.d("retrofitt", "error : " + error)
val header = response.headers()
Log.d("retrofitt", "header : " + header)
}
}
override fun onFailure(call: Call<ArrayList<PersonFromServer>>, t: Throwable) {
Log.d("retrofitt", "ERROR")
}
})
- POST요청 (1) -> HashMap이용
POST요청 (1)
val params = HashMap<String, Any>()
params.put("name", "김개똥")
params.put("age", 200)
params.put("intro", "안녕하세요")
service.createStudent(params).enqueue(object: Callback<PersonFromServer>{
override fun onResponse(
call: Call<PersonFromServer>,
response: Response<PersonFromServer>
) {
if(response.isSuccessful){
val person = response.body()
Log.d("retrofitt", "name : " + person?.name)
}
}
override fun onFailure(call: Call<PersonFromServer>, t: Throwable) {
}
})
- POST요청 (2) -> VO이용
// POST요청 (2)
val person = PersonFromServer(name = "아무개", age = 40000, intro = "아무개입니당")
service.createStudentEasy(person).enqueue(object: Callback<PersonFromServer>{
override fun onResponse(
call: Call<PersonFromServer>,
response: Response<PersonFromServer>
) {
if(response.isSuccessful){
val person = response.body()
Log.d("retrofitt", "name : " + person?.name)
}
}
override fun onFailure(call: Call<PersonFromServer>, t: Throwable) {
}
})
- PersonFromServer
class PersonFromServer (
var id: Int? = null,
var name: String? = null,
var age:Int? = null,
var intro:String? = null
) : Serializable
Permission (0) | 2020.11.24 |
---|---|
Realm(내장 DB) (0) | 2020.11.23 |
Network (0) | 2020.11.23 |
Async(비동기) (0) | 2020.11.23 |
Database(SharedPreference) (0) | 2020.11.20 |
댓글 영역