상세 컨텐츠

본문 제목

Retrofit

Android(강의정리)

by 낙지지 2020. 11. 24. 11:14

본문

 

참고

 

레트로핏 (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

 

'Android(강의정리)' 카테고리의 다른 글

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

관련글 더보기

댓글 영역