Giới thiệu
Retrofit là thư viện được viết bằng Java, mục đích để dễ dàng gửi Request HTTP, HTTPS lên Server.
Hỗ trợ phương thức POST, GET, PUT, DELETE.
Hỗ trợ ánh xạ Json sang Gson.
* Gson: Ánh xạ Json Object sang Java/Kotlin Object.
Sử dụng
Import thư viện cần thiết:implementation 'com.squareup.retrofit2:retrofit:2.5.0'implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
Chúng ta sẽ xây dựng 1 ứng dụng tìm kiếm thành phố trên thế giới đơn giản đơn giản với API có sẵn
API
API: https://location-query.herokuapp.com/location?key_word=<key_word>
* key_word: Là từ khóa cần tìm kiếm
Ví dụ tìm kiếm London:
https://location-query.herokuapp.com/location?key_word=london
Response:
{
"code":200,
"key_word":"london",
"result":[
{
"id":2643743,
"name":"London",
"country":"GB",
"coord":{
"lon":-0.12574,
"lat":51.50853
}
},
{
"id":2648110,
"name":"Greater London",
"country":"GB",
"coord":{
"lon":-0.16667,
"lat":51.5
}
},
{
"id":1006984,
"name":"East London",
"country":"ZA",
"coord":{
"lon":27.911619,
"lat":-33.015289
}
},
{
"id":2643734,
"name":"Londonderry County Borough",
"country":"GB",
"coord":{
"lon":-7.30917,
"lat":54.997211
}
},
{
"id":2643744,
"name":"City of London",
"country":"GB",
"coord":{
"lon":-0.08901,
"lat":51.51334
}
},
{
"id":5056033,
"name":"London",
"country":"US",
"coord":{
"lon":-95.234978,
"lat":40.445
}
},
{
"id":6058560,
"name":"London",
"country":"CA",
"coord":{
"lon":-81.23304,
"lat":42.983391
}
},
{
"id":4839420,
"name":"New London County",
"country":"US",
"coord":{
"lon":-72.066193,
"lat":41.483429
}
},
{
"id":7535661,
"name":"London Borough of Harrow",
"country":"GB",
"coord":{
"lon":-0.33333,
"lat":51.566669
}
},
{
"id":6058563,
"name":"Londonderry",
"country":"CA",
"coord":{
"lon":-63.598701,
"lat":45.483452
}
},
{
"id":3489741,
"name":"Little London",
"country":"JM",
"coord":{
"lon":-78.216408,
"lat":18.248301
}
},
{
"id":2643741,
"name":"City of London",
"country":"GB",
"coord":{
"lon":-0.09184,
"lat":51.512791
}
},
{
"id":4839416,
"name":"New London",
"country":"US",
"coord":{
"lon":-72.099518,
"lat":41.355652
}
},
{
"id":1644003,
"name":"Glondong",
"country":"ID",
"coord":{
"lon":111.891602,
"lat":-6.7924
}
},
{
"id":4030939,
"name":"London Village",
"country":"KI",
"coord":{
"lon":-157.475021,
"lat":1.98487
}
},
{
"id":4119617,
"name":"London",
"country":"US",
"coord":{
"lon":-93.25296,
"lat":35.328972
}
},
{
"id":4298960,
"name":"London",
"country":"US",
"coord":{
"lon":-84.08326,
"lat":37.128979
}
},
{
"id":4361094,
"name":"Londontowne",
"country":"US",
"coord":{
"lon":-76.549408,
"lat":38.933449
}
},
{
"id":4400423,
"name":"New London",
"country":"US",
"coord":{
"lon":-91.400978,
"lat":39.58532
}
},
{
"id":4517009,
"name":"London",
"country":"US",
"coord":{
"lon":-83.44825,
"lat":39.886452
}
},
{
"id":4868768,
"name":"New London",
"country":"US",
"coord":{
"lon":-91.399597,
"lat":40.926979
}
},
{
"id":5039111,
"name":"New London",
"country":"US",
"coord":{
"lon":-94.944183,
"lat":45.301079
}
},
{
"id":5088905,
"name":"Londonderry",
"country":"US",
"coord":{
"lon":-71.373947,
"lat":42.865089
}
},
{
"id":5090189,
"name":"New London",
"country":"US",
"coord":{
"lon":-71.985077,
"lat":43.41396
}
},
{
"id":5164352,
"name":"New London",
"country":"US",
"coord":{
"lon":-82.399887,
"lat":41.085049
}
},
{
"id":5264455,
"name":"New London",
"country":"US",
"coord":{
"lon":-88.73983,
"lat":44.392761
}
},
{
"id":5367815,
"name":"London",
"country":"US",
"coord":{
"lon":-119.443176,
"lat":36.476059
}
}
]
}
Ánh xạ Json vào Object Kotlin
CityCollection.kt1
2
3class CityCollection (val id: Long, val name: String, val country: String, val coord: Coord){
inner class Coord(val lon: Double, val lat: Double)
}
ResponseCollection.kt1
class ResponseCollection (val code: Int, val key_word: String, val result: ArrayList<CityCollection>)
Xây dựng Interface cho API
API.kt
1 | interface API { |
Khởi tạo Retrofit
RetrofitCommon.kt
1 | class RetrofitCommon { |
Xây dựng Interface để cập nhật giao diện
OnResponse.kt
1 | interface OnResponse { |
Request tới API
1 | class RequestCity(private val onResponse: OnResponse) { |

URL QR