retrofit:2.2.0的基本使用
retrofit:2.2.0框架功能强大,在网络加载方面封装的非常优秀,今天我们来了解下他的基本使用方法
1,导入依赖:
这里把gson这个优秀的框架也一并导入
implementation 'com.squareup.retrofit2:retrofit:2.2.0'
implementation 'com.squareup.retrofit2:converter-gson:2.2.0'
2,初始化Retrofit对象
//很明显我们可以看到Retrofit这个框架采用的是构建者模式
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Contant.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
/**
*这里有必要解释下这个BASE_URL,这个string表示的是服务器连接的最顶级
* 例如:
* https://mp.csdn.net/mdeditor/a.png
* https://mp.csdn.net/mdeditor/c.png
* https://mp.csdn.net/mdeditor/mm/.png
* https://mp.csdn.net/mdeditor/yh.png
* https://mp.csdn.net/mdeditor/my.png
* name这里的BASE_URL就是 https://mp.csdn.net/mdeditor/
* 可以理解为根url
*/
3,制定网络请求实体
responseInfoAPI = retrofit.create(ResponseInfoAPI.class)
/**
* 在这里就需要重点介绍下这个ResponseInfoAPI ,这个名字是自己起的,叫什么无所谓,主要是里面的内容
*/
我们需要重新写一个接口
public interface ResponseInfoAPI {
//指定请求方式
//请求的完整链接地址
//请求的方法,请求参数
//请求的相应结果
//http://10.0.2.2:8080/TakeoutServiceVersion2
@GET(Contant.HOME_URL)
Call<ResponseInfo> getHomeInfo(@Query("latitude") String latitude, @Query("longitude") String longitude);
}
/**
* 1,很多人看到这里就比较迷糊了,读者可以先看成一个普通接口
* getHomeInfo(String latitude,String longitude)
* 2,接下来@GET(Contant.HOME_URL)这个表示将HOME_URL这个连接传进去,注意这里的HOME_URL会拼接在前面的BASE_URL的后面形成一个完整的URL链接。形成以下的形式,get的形式
* @GET(Contant.HOME_URL)
* getHomeInfo(String latitude,String longitude)
* 3,完整的url是形成了,但是需要传入相关的参数,这里的参数就是String latitude,String longitude,在retrofit中用一个标志表示在get中传入的参数也就是@Query("latitude")
* 4,最后带一个返回值
* @GET(Contant.HOME_URL)
* Call<ResponseInfo> getHomeInfo(@Query("latitude") String latitude, @Query("longitude") String
* 5,这里的返回值是你自己定义的,但是必须跟你的数据对应
*/
3,触发调用
public class HomePresenter extends BasePresenter {
@Override
protected void showError(String message) {
}
@Override
protected void parseJson(String json) {
//在此处解析JSON
Gson gson = new Gson();
gson.fromJson(json, HomeInfo.class)
}
//触发网络请求
public void getHomeData(String lat,String lon){
Call<ResponseInfo> homeInfo = responseInfoAPI.getHomeInfo(lat, lon);
//触发callback中的成功或者失败的回调方法
homeInfo.enqueue(new CallBackAdapter());
}
}
一旦getHomeData这个方法被调用就会执行网络请求,而此时这个类实现了上一个类,需要实现两个回调方法,于是就会有数据出来
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)