You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Retrofit은 Java 와 Android를 위한 REST client 입니다. 이 library는 JSON 또는 다른 구조적인 data를 좀더 쉽게 REST 기반으로 얻고 업로드 할 수있습니다.
Retrofit에서는 data의 직렬화에 사용되는 converter를 설정할 수있어, 예를 들어 JSON과 objects 사이의 serialize, deserialize를 GSON을 이용하기도 합니다. XML 또는 다른 protocols을 처리하기위한 custom 한 converters 또란 추가 할 수 있습니다.
Http 요청을 만들기 위해서 Retrofit은 OkHttp library를 사용합니다. OkHttp는 low-level의 네트워크 operation, caching, requests, responses 를 담당하는 pure한 HTTP/SPDY client 입니다. 반면에 Retrofit은 OkHttp 위의 high-level의 REST 추상 구현 입니다.
classMainActivity : AppCompatActivity() {
privatelateinitvar listView:ListViewprivatelateinitvar listAdapter:AddSearchListAdapteroverridefunonCreate(savedInstanceState:Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
listView = findViewById(R.id.listview_activity_add_search)
setupList()
setupRetrofitTemporarily()
}
privatefunsetupRetrofitTemporarily() {
// 인증을 위해 interceptor 를 이용하고 이를 위해선 custom 한 okHttp client 가 필요합니다.val builder =OkHttpClient.Builder()
builder.interceptors().add(AuthenticationInterceptor())
val client = builder.build()
val api =Retrofit.Builder()
.baseUrl("https://sandbox-api.coinmarketcap.com/")
.addConverterFactory(GsonConverterFactory.create()) // GSON converter 를 사용해 JSON 을 POJO 객체로 매핑
.client(client) // 여기서 방금 만든 custom OkHttp client 를 설정 해줍니다.
.build().create(ApiService::class.java) // 우리가 만든 interface 를 통해 API를 만든다.val adapterData:MutableList<Cryptocurrency> =ArrayList()
val currentFiatCurrencyCode ="KRW"// 비동기적val call = api.getAllCrytocurrencies("KRW")
val result = call.enqueue(object:Callback<CryptocurrenciesLatest> {
overridefunonResponse(
call:Call<CryptocurrenciesLatest>,
response:Response<CryptocurrenciesLatest>
) {
// response가 성공적인 지 확인합니다. 즉, 요청이 성공적으로// received, understood, accepted and returned code in range [200..300).if (response.isSuccessful) {
Log.d("MainActivity call", "${response.body()}")
Toast.makeText(this@MainActivity, "Call Ok", Toast.LENGTH_SHORT).show()
val cryptocurrenciesLatest:CryptocurrenciesLatest?= response.body()
cryptocurrenciesLatest!!.data.forEach {
val cryptocurrency =Cryptocurrency(
it.name, it.cmcRank.toShort(),
0.0, it.symbol, currentFiatCurrencyCode, it.quote.currency.price,
0.0, it.quote.currency.percentChange1h,
it.quote.currency.percentChange7d, it.quote.currency.percentChange24h,
0.0
)
adapterData.add(cryptocurrency)
}
listAdapter.setData(adapterData)
} else {
Snackbar.make(
findViewById(android.R.id.content),
"Call error with HTTP status code ${response.code()}!",
Snackbar.LENGTH_INDEFINITE
).show()
}
}
// server 에서 무언가 잘 못 되더라고 항상 response를 받도록 설계됨.overridefunonFailure(call:Call<CryptocurrenciesLatest>, t:Throwable) {
Snackbar.make(
findViewById(android.R.id.content),
"요청 실패! ${t.localizedMessage}",
Snackbar.LENGTH_INDEFINITE
).show()
}
})
}
privatefunsetupList() {
listAdapter =AddSearchListAdapter(this)
listView.adapter = listAdapter
}
}
7주차
Retrofit, OkHttp 가 뭔가요?
Retrofit은 Java 와 Android를 위한 REST client 입니다. 이 library는 JSON 또는 다른 구조적인 data를 좀더 쉽게 REST 기반으로 얻고 업로드 할 수있습니다.
Retrofit에서는 data의 직렬화에 사용되는 converter를 설정할 수있어, 예를 들어 JSON과 objects 사이의 serialize, deserialize를 GSON을 이용하기도 합니다. XML 또는 다른 protocols을 처리하기위한 custom 한 converters 또란 추가 할 수 있습니다.
Http 요청을 만들기 위해서 Retrofit은 OkHttp library를 사용합니다. OkHttp는 low-level의 네트워크 operation, caching, requests, responses 를 담당하는 pure한 HTTP/SPDY client 입니다. 반면에 Retrofit은 OkHttp 위의 high-level의 REST 추상 구현 입니다.
Retrofit
GSON
Practice
첫 번째로 인터넷 허락을 해줍니다.
두 번째로 사용할 라이브러리를 추가해줍니다
Retrofit interface 를 제작한다. 그리고 요청을 받은 data class
request 요청에 interceptor 를 이용해 header를 추가하여 인증을 하자!
마지막으로 Activity를 작성합니다!!
자세한 코드는 project 링크를 참조하세요!
실행결과!
OKHttp
OkHttp는 HTTP client 입니다.
간단한 call
7.pdf
The text was updated successfully, but these errors were encountered: