[AndroidStudio][Kotlin] Retrofit, 레트로핏으로 api 사용하기

2023. 8. 16. 21:51·IDE/Android Studio

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
'IDE/Android Studio' 카테고리의 다른 글
  • [AndroidStudio][FireBase] SHA-1 디지털 지문 발급받기 / zsh: permission denied: ./gradlew 해결
  • [Android Studio] 인텐트 알아보기
  • [AndroidStudio][Kotlin] WebView로 웹 페이지 안드로이드 앱으로 빌드하기
  • [AndroidStudio][Kotlin] 웹 뷰 에러 net::ERROR_CACHE_MISS,
hurlud
hurlud
나와 같은 궁금증을 가진 사람들을 위해 오늘도! 🐥
  • hurlud
    주독야독
    hurlud
  • 전체
    오늘
    어제
  • 최근 글

    • ALL (106)
      • CS (13)
      • Linux (2)
      • Deploy (7)
        • AWS (6)
        • Docker (1)
      • IDE (13)
        • IntelliJ (5)
        • Android Studio (8)
      • DB (10)
        • MySQL (6)
        • MongoDB (4)
      • Programming Language (20)
        • JavaScript (10)
        • Java (8)
        • Python (2)
      • Framework (32)
        • Node.js (6)
        • SpringBoot (17)
        • React (6)
        • NestJS (2)
      • Git | Github (4)
      • ETC (5)
      • Akka (0)
  • 링크

    • 깃허브
  • hELLO· Designed By정상우.v4.10.0
hurlud
[AndroidStudio][Kotlin] Retrofit, 레트로핏으로 api 사용하기
상단으로

티스토리툴바