美文网首页
Retrofit使用

Retrofit使用

作者: 努力生活的西鱼 | 来源:发表于2019-03-08 15: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) {
    
        }
    });
    

    相关文章

      网友评论

          本文标题:Retrofit使用

          本文链接:https://www.haomeiwen.com/subject/ydmrpqtx.html