Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다.
이번 시간에는 화면 및 기능을 구현하겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정
- 설명 -
1. api 호출 데이터 값 보여주는 TextView
2. 조회 코인 입력 EditText
3. api 호출 기능 Button
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/resultText"
android:layout_width="match_parent"
android:layout_height="200dp"
android:textSize="20sp" />
<EditText
android:id="@+id/coinEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp" />
<Button
android:id="@+id/searchBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:text="조회" />
</LinearLayout>
- 설명 -
1. val retrofit: Retrofit = Retrofit.Builder()
retrofit2 객체 생성
2. val apiService: ApiService = retrofit.create(ApiService::class.java)
service 객체 생성
3. val tickerCall = apiService.getCoinTicker(coinNm, "KRW")
Call객체 생성
4. tickerCall.enqueue(object: Callback<Ticker>
네트워크 통신
5. api 문서
https://apidocs.bithumb.com/reference/현재가-정보-조회
class MainActivity : AppCompatActivity() {
lateinit var coinEdit: EditText
lateinit var resultText: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
coinEdit = findViewById(R.id.coinEdit)
resultText = findViewById(R.id.resultText)
val searchBtn: Button = findViewById(R.id.searchBtn)
//버튼 클릭 이벤트
searchBtn.setOnClickListener {
//초기화
resultText.text = ""
//api 호출
apiRequest()
}
}
/**
* HTTP api 호출
*/
private fun apiRequest(){
//1. retrofit 객체 생성
val retrofit: Retrofit = Retrofit.Builder()
.baseUrl("https://api.bithumb.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
//2. service 객체 생성
val apiService: ApiService = retrofit.create(ApiService::class.java)
//3. Call객체 생성
val coinNm = coinEdit.text.toString().uppercase()//입력값, 대문자로
val tickerCall = apiService.getCoinTicker(coinNm, "KRW")
//4. 네트워크 통신
tickerCall.enqueue(object: Callback<Ticker>{
override fun onResponse(call: Call<Ticker>, response: Response<Ticker>) {
//호출 데이터
val tickerInfo = response.body()
resultText.append("status: ${tickerInfo?.status} \n")
resultText.append("closing_price: ${tickerInfo?.data?.closing_price} \n")
resultText.append("opening_price: ${tickerInfo?.data?.opening_price} \n")
resultText.append("max_price: ${tickerInfo?.data?.max_price} \n")
resultText.append("min_price: ${tickerInfo?.data?.min_price} \n")
}
override fun onFailure(call: Call<Ticker>, t: Throwable) {
//오류 시 발생
call.cancel()
}
})
}
}
2022.09.27 - [안드로이드] - [안드로이드 코틀린] Vibrator 진동 효과 내는 방법
2022.09.26 - [안드로이드] - [안드로이드 코틀린] Ringtone 효과음 내는 방법
2022.09.22 - [안드로이드] - [안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법
[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법 (0) | 2022.10.03 |
---|---|
[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법 (0) | 2022.09.30 |
[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정 (0) | 2022.09.28 |
[안드로이드 코틀린] Vibrator 진동 효과 내는 방법 (0) | 2022.09.27 |
[안드로이드 코틀린] Ringtone 효과음 내는 방법 (0) | 2022.09.26 |
댓글 영역