Retrofit使用

2019-03-08  本文已影响0人  努力生活的西鱼

Retrofit

Retrofit的使用
1. 在Gradle添加retrofit依赖
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.squareup.retrofit2:converter-scalars:2.5.0'
2. 创建接收服务器返回数据的类
public class Reception {
    ...
    // 根据返回数据的格式和数据解析方式(Json、XML等)定义
}
3. 创建用于描述网络请求的接口
public interface DataService {

    /**
     * 指定get请求方式,指定路径,有时候路径除了baseUrl还有一部分比如http://write.blog.csdn.net/mdeditor
     * http://write.blog.csdn.net/ 一般是baseUrl
     * 而mdeditor是相对路径的
     * @param url
     * @return
     */
    @GET
    Call<String> baidu(@Url String url);

}
4. 创建Retrofit实例
// 创建Retrofit对象
Retrofit retrofit = new Retrofit.Builder()
        // 指定baseUrl,这里有坑,最后后缀带着“/”
        .baseUrl("https://www.baidu.com/")
        // 设置内容格式,这种对应的数据返回值是String类型的
        .addConverterFactory(ScalarsConverterFactory.create())
        // 定义client类型
        .client(new OkHttpClient())
        // 创建
        .build();
5. 创建网络请求接口实例
// 创建网络请求接口实例
DataService dataService = retrofit.create(DataService.class);
6. 发送网络请求
// 在这里又重新设定了下baidu的地址,是因为Retrofit要求传入具体,如果是绝对路径的话,路径会将baseUrl覆盖掉
Call<String> baidu = dataService.baidu("https://www.baidu.com/");

// 执行异步请求
baidu.enqueue(new Callback<String>() {
    @Override
    public void onResponse(Call<String> call, Response<String> response) {
        Toast.makeText(MainActivity.this, ""+response.body(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onFailure(Call<String> call, Throwable t) {

    }
});
上一篇下一篇

猜你喜欢

热点阅读