상세 컨텐츠

본문 제목

[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part2 - 화면 및 기능

안드로이드

by aries574 2022. 9. 29. 14:58

본문


Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다.

이번 시간에는 화면 기능을 구현하겠습니다. 

이전 포스팅은 아래 링크를 들어가시면 됩니다.

2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정

 

[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정

Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1. 권한 등록 2. 라이브러리 등록 3. 모델 클래스 4. 서비스 인터페

aries574.tistory.com


목차

1. 실행 화면
2. 메인 화면 activity_main.xml
3. 메인 코드 MainActivity.kt


1. 실행 화면

 


2. 메인 화면 activity_main.xml

- 설명 -

 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>

 


3. 메인 코드 MainActivity.kt

- 설명 -

 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/현재가-정보-조회

 

현재가 정보 조회 (자산별)

현재가 정보 조회 (자산별)get https://api.bithumb.com/public/ticker/_요청 당시 빗썸 거래소 가상자산 현재가 정보를 제공합니다. 필드설명타입status결과 상태 코드 (정상: 0000, 그 외 에러 코드 참조)Stringop

apidocs.bithumb.com

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 진동 효과 내는 방법

 

[안드로이드 코틀린] Vibrator 진동 효과 내는 방법

이번 시간에는 진동으로 알림 효과 내는 방법에 대하여 알아보겠습니다. 목차 1. 권한 등록 2. 메인 화면 activity_main.xml 3. 메인 코드 MainActivity.kt 1. 권한 등록 - 설명 -  진동 효과를 내기..

aries574.tistory.com

2022.09.26 - [안드로이드] - [안드로이드 코틀린] Ringtone 효과음 내는 방법

 

[안드로이드 코틀린] Ringtone 효과음 내는 방법

이번 시간에는 소리로 알림을 알려주는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 activity_main.xml 3. 메인 코드 MainActivity.kt 1. 실행 화면 2. 메인 화면 activity_main..

aries574.tistory.com

2022.09.22 - [안드로이드] - [안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법

 

[안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법

이번 시간에는 RecyclerView로 만든 리스트의 아이템 다중 선택하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 아이템 클래스 Item.kt 3. 아이템 화면 list_item.xml 4. 아이템 어댑터 ItemAdapte..

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역