환율 정보 API
https://www.data.go.kr/data/3068846/openapi.do
위의 링크에서 API 인증키를 발급받았다.
인증키를 이용해서 테스트를 해보면, 아래와 같은 결과가 나온다.
요청 변수
출력 결과
의존성 추가
버전 확인
https://github.com/square/retrofit
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
권한 추가 (인터넷)
<uses-permission android:name="android.permission.INTERNET"/>
데이터 클래스 생성
결과로 받아올 데이터를 정리합니다. 필요한 데이터만 작성하겠습니다.
import com.google.gson.annotations.SerializedName
data class Exchange(
@SerializedName("result") val result : String,
@SerializedName("cur_unit") val unit : String?,
@SerializedName("ttb") val ttb : Double?,
@SerializedName("tts") val tts : Double?,
@SerializedName("deal_bas_r") val deal : Double?,
@SerializedName("cur_nm") val name : String?
)
클라이언트 생성
이 때 response의 결과를 HttpLoggingInterceptor 추가하여 쉽게 확인할 수 있도록 하였다.
import com.shino72.exchangecal.service.ExchangeService
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
object ExchangeClient {
val okHttpClient = OkHttpClient.Builder()
.addInterceptor(HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
.build()
val retrofit = Retrofit.Builder()
.baseUrl("https://www.koreaexim.go.kr/site/program/financial/")
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build()
val exchangeService : ExchangeService by lazy { retrofit.create(ExchangeService::class.java) }
}
서비스 생성
interface ExchangeService {
@GET("exchangeJSON?authkey=${API_KEY.API_KEY}")
fun getRespos(
@Query("searchdate") searchdate : String,
@Query("data") data : String,
) : Call<List<Exchange>>
}
확인
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.shino72.exchangecal.R
import com.shino72.exchangecal.client.ExchangeClient
import com.shino72.exchangecal.model.Exchange
import com.shino72.exchangecal.service.ExchangeService
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
getEx("20230117")
}
private fun getEx(date : String)
{
val ExchangeClient = ExchangeClient
ExchangeClient.exchangeService.getRespos(date, "AP01").enqueue(object : Callback<List<Exchange>>{
override fun onResponse(call: Call<List<Exchange>>, response: Response<List<Exchange>>) {
}
override fun onFailure(call: Call<List<Exchange>>, t: Throwable) {
}
})
}
}
결과
잘 받아와지는 것을 확인할 수 있다. 다음은 이 데이터를 활용하여 환율 계산기를 제작해보려고 한다.
(2023_01_30일자 환율 계산기 완성 - https://github.com/Myeongcheol-shin/exchangeCal)
'안드로이드 > 앱 개발' 카테고리의 다른 글
[Android App] 명언 제조기 (0) | 2023.07.17 |
---|---|
[Retrofit] MultiPart / PartMap 사용하기 (0) | 2023.05.22 |
[Android][Kotlin][길찾기 기능 구현하기] Part1. 기능 구상 (0) | 2023.04.03 |
[kotlin] RecyclerView를 이용하여 지하철 노선도 만들기 (0) | 2023.01.30 |
ott 결제 일정 앱 (0) | 2022.07.28 |