zoukankan      html  css  js  c++  java
  • Retrofit学习

    Retrofit学习

    可能第一次学习的时候不够充分了解,因此今天再来重新捋捋Retrofit这个Android网络组件如何使用。部分内容参考了一下博客和官网。

    简介

    Retrofit框架是一个网络请求框架,该框架的实质还是通过OkHttp的形式进行网络的访问,对于Retrofit部分,仅仅是把你所需要的东西封装成了一个网络请求接口的类型。

    使用该框架的时候,需要gradle进行导包:

    implementation ("com.squareup.retrofit2:retrofit:2.9.0")
    implementation("com.squareup.okhttp3:okhttp:4.9.0")
    

    因为retrofit内部是使用okhttp框架的,所以除了添加retrofit依赖以外,还需要添加okhttp框架的依赖。

    最简单的一个使用方法,创建一个小按钮,然后需要实现的功能就是点击这个按钮后,能够进行访问https://baidu.com/这个网站,并且进行获取这个网页的内容。

    然后使用Retrofit来写代码

    接口部分

    interface IRemoteDemo {
        @GET("")
        fun getResponse(): Call<ResponseBody>
    }
    

    按钮中的操作内容

    val retrofit: Retrofit = Retrofit.Builder()
        .baseUrl("https://www.baidu.com/") //设定基本的url
        .build()
    val iRemoteDemo: IRemoteDemo =retrofit.create(IRemoteDemo::class.java)
    val call=iRemoteDemo.getResponse()
    call.enqueue(object : Callback<ResponseBody> {
        override fun onResponse(
            call: Call<ResponseBody>,
            response: retrofit2.Response<ResponseBody>
        ) {
            Log.d("retrofitdemotag","${response.body()?.string()}")
        }
        override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
            Log.d("retrofitdemotag","${t.printStackTrace()}")
        }
    })
    

    分析

    接口部分写了一个函数,需要获取返回值的内容,然后是使用对应的get方法的。然后在按钮部分中,声明了对应的一个retrofit类,然后用该类去查u你更加爱你一个call实例,最后用call实例执行enqueue方法去进行网络的访问与返回。

    在创建retrofit中,使用的是Retrofit.Builder进行创建的,需要制定其基本的url。

    retrofit这个组件,会把一个请求api的链接分成两部分,一部分是baseurl,另一部分是除去baseurl中的后半部分。比如请求一个url=http:192.168.0.100:8080/web_demo/userServlet,那么baseurl就是http:192.168.0.100:8080/web_demo/这部分,后半部分就是userServlet

    如果在baseurl中并没有以/为结尾的,那么在interface中的@GET中或者其他的标注中必须使用/作为开头,否则就会抛出异常。

    使用GSON进行转换

    如果使用了JSON进行文件的传送,那么可能会使用到GSON这个组件。使用组件需要进行导包:

    implementation ("com.google.code.gson:gson:2.8.7")
    
    implementation ("com.squareup.retrofit2:converter-gson:2.9.0")
    
    

    在retrofit中使用Gson比较简单,在创建的时候进行创建就行,定义好一个写好的类,然后在创建retrofit时进行添加ConverterFactory即可:

    val retrofit:Retrofit=Retrofit.Builder()
                    .baseUrl("https://www.baidu.com") //设定基本的url
                    .addConverterFactory(GsonConverterFactory.create())
                    .build()
    

    Gson这个组件比较简单,该组件时Google公司开发的,主要的作用是把json字段转换成对应的类,或者把对应的类转换成json字段,然后通过文字的形式往网络上进行传送。

    这是小睿的博客,如果需要转载,请标注出处啦~ヾ(≧▽≦*)o谢谢。
  • 相关阅读:
    软件工程课后作业3:如何返回一个整数数组中最大子数组的和
    软件工程课后作业2:四则运算题目扩展:可指定题目数量并且支持真分数运算
    软件工程课后作业1:三十道四则运算题目
    团队作业3返回整数数组中最大子数组的和(多个数组)
    求一个二维数组所有子数组和的最大值(郭少周,陈泽)
    郭少周和陈泽两人合作课堂练习和课下作业
    学生成绩查询系统个人NABCD
    返回一个整数组的最大子数组和
    个人项目3
    返回一个二维整数组中最大子数组的和
  • 原文地址:https://www.cnblogs.com/Yunrui-blogs/p/15131497.html
Copyright © 2011-2022 走看看