Kotlin 使用Retrofit2.0

首先导入gradle Retrofit2.0

implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'

直接上代码

interface GetRequest_Interface {
    @GET("channels/3?pageNo=1&pageSize=20&v=4.0.0")
    fun getCall() : Call<MyCarBean>
    // @GET注解的作用:采用Get方法发送网络请求
    // getCall() = 接收网络请求数据的方法
    // 其中返回类型为Call<*>,*是接收数据的类(即上面定义的Translation类)
    // 如果想直接获得Responsebody中的内容,可以定义网络请求返回值为Call<ResponseBody>
    //动态配置URL地址

    @GET("channels/3?pageNo={page}&pageSize=20&v=4.0.0")
    fun getIpMsgPath(@Path("page") page: String):Call<MyCarBean>

    //动态指定查询条件
    @GET("getIpInfo.php")
    fun getIpMsgQuery(@Query("ip") ip:String):Call<MyCarBean>

    //动态指定查询条件组
    @GET("getIpInfo.php")
    fun getIpMsgQueryMap(@QueryMap option:Map<String,String>):Call<MyCarBean>

    //Post 表单形式请求
    @FormUrlEncoded
    @POST("getIpInfo.php")
    fun getIpMsgPost(@Field("ip") first:String):Call<MyCarBean>

    //POST JSON数据请求
    @POST("getIpInfo.php")
    fun getIpMsgPostBody(@Body ip: String):Call<MyCarBean>

    //单文件上传
    @Multipart
    @POST("user/photo")
    fun upDateUser(@Part photo: MultipartBody.Part, @Part("description") description: RequestBody):Call<MyCarBean>
    //多文件上传
    @Multipart
    @POST("user/photo")
    fun upDateUser(@PartMap photos:Map<String,String>, @Part("description") description: RequestBody):Call<MyCarBean>
}

我们的实体类

 class MyCarBean(var data:List<CarInfo>) {
     class CarInfo(
    var articleType: String,
    var count: String,
    var downs: String,
    var firstImg: String,
    var id: String,
    var image: String,
    var mtime: String,
    var pubDate: String,
    var title: String,
    var ups: String,
    var url: String
    )
}

直接在MainActivity 请求数据

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        initData()
    }

    private fun initData() {
        var retrofit = Retrofit.Builder()
                .baseUrl("http://mrobot.pcauto.com.cn/v2/cms/")  //注意这里必须以/结尾不然报错
                .addConverterFactory(GsonConverterFactory.create())
                .build()
        val ipService = retrofit.create(GetRequest_Interface::class.java)
        ipService.getCall().enqueue(object: Callback<MyCarBean> {
            override fun onResponse(call: Call<MyCarBean>?, response: Response<MyCarBean>?) {
                //成功
                var myCarBean: MyCarBean? = response!!.body()
                var myCarBeanLists: List<MyCarBean.CarInfo> = myCarBean!!.data

                for (ca in myCarBeanLists){
                    Log.v("maz",ca.title)
                }
            }
            override fun onFailure(call: Call<MyCarBean>?, t: Throwable?) {
                //失败
            }
        })
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://mp.csdn.net/mdeditor/81903347

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值