“com.squareup.retrofit2:retrofit:2.9.0”,
“com.squareup.retrofit2:adapter-rxjava2:2.9.0”,
“com.squareup.retrofit2:converter-gson:2.9.0”,
“io.reactivex.rxjava2:rxjava:2.2.21”,
“io.reactivex.rxjava2:rxandroid:2.1.1”,
class SearchResultModel: BaseViewModel2() {
private val baseUrl = "https://apis.tianapi.com/"
fun requestScenicSpotData(
context: Context,
word: String,
iRequestOilPriceCallback: IRequestScenicSpotCallback
){
Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
.create(BeanDataService::class.java)
.requestScenicSpot(ScenicSpotKeyUtil.key,word)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Observer<ScenicSpotRequestBean> {
override fun onSubscribe(d: Disposable) {
}
override fun onError(e: Throwable) {
e.printStackTrace()
iRequestOilPriceCallback.fail(
context.resources.getString(R.string.request_fail))
}
override fun onComplete() {
}
override fun onNext(scenicSpotRequestBean: ScenicSpotRequestBean) {
if (scenicSpotRequestBean.code == 200){
scenicSpotRequestBean.result?.list?.let {
iRequestOilPriceCallback.success(it)
}
}else {
iRequestOilPriceCallback.fail(
context.resources.getString(R.string.request_fail))
}
}
})
}
interface IRequestScenicSpotCallback{
fun success(list: List<ScenicSpotBean>)
fun fail(msg: String)
}
}
interface BeanDataService {
@GET("scenic/index")
fun requestScenicSpot(
@Query("key") key: String?, @Query("word") word: String?, @Query("num") num: Int = 15
): Observable<ScenicSpotRequestBean>
}
接口字符串:
{
"code": 200,
"msg": "success",
"result": {
"list": [
{
"name": "上海城市规划展示馆",
"content": "上海城市规划展示馆位于市政府大厦的东侧,馆顶4只象征上海市市花白玉兰的巨大白色钢帽在艳阳下熠熠生辉,她与西侧水晶宫般的上海大剧院一左一右相映成趣。总投资2.6亿元的城市规划展示馆主体高43.3米,地面5层,地下2层,总建筑面积18393平方米。城市规划展示馆不仅有利于市民参观了解城市的发展变化和未来规划,更有利于向国内外宾客介绍上海城市规划与建设的情况,树立上海对外开放的国际大都市形象。",
"province": "上海",
"city": "上海"
}
]
}
}
设置实体:
class ScenicSpotRequestBean {
var code: Int = 0
var msg: String = ""
var result: ResultObject? = null
class ResultObject{
var list: List<ScenicSpotBean>? = null
}
}
class ScenicSpotBean {
private var name: String = ""
private var content: String = ""
private var province: String = ""
private var city: String = ""
fun getName(): String {
return name
}
fun setName(name: String) {
this.name = name
}
fun getContent(): String {
return content
}
fun setContent(content: String) {
this.content = content
}
fun getProvince(): String {
return province
}
fun setProvince(province: String) {
this.province = province
}
fun getCity(): String {
return city
}
fun setCity(city: String) {
this.city = city
}
override fun toString(): String {
return "{" +
"name='" + name + '\'' +
", content='" + content + '\'' +
", province='" + province + '\'' +
", city='" + city + '\'' +
'}'
}
}