美文网首页
Retrofit 2.0 基础篇

Retrofit 2.0 基础篇

作者: 敲代码的本愿 | 来源:发表于2016-10-12 21:16 被阅读82次

    简介

    是一套 RESTful 架构的 Android(JAVA)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Java对象),POJO to JSON,网络请求(GET,POST 等)封装。

    Retrofit 2.0 默认使用 OkHttp 3

    官网:http://square.github.io/retrofit/
    GitHub:https://github.com/square/retrofit

    添加依赖

    项目的build.gradle添加依赖:

    compile 'com.squareup.retrofit2:retrofit:2.2.0'
    

    创建实例

    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("http://localhost:1234/")
        .build();
    

    注意:Retrofit 2.0baseUrl必须以 / 结束,否则抛出 IllegalArgumentException 错误。

    定义接口

    //例:获取指定 id 的 blog
    public interface BlogService{
        @GET("blog/{id}")
        Call<ResponseBody> getBlog(@Path("id") int id);
    }
    

    注意:
    需要用 Retrofit 创建一个 BlogService 的代理对象,然后调用方法。
    如果是 @GET("http://ip.taobao.com/service/getIpInfo.php"),则 baseUrl 无效。

    BlogService service = retrofit.create(BlogService.class);
    

    接口调用

    Call<ResponseBody> call = service.getBlog(3);
    
    //同步
    //需处理 android.os.NetworkOnMainThreadException
    try{
        ResponseBody<ResponseBody> response = call.execute();
        String body = response.body.string();//获取返回体的字符串
        Log.i("Callback", body);
    } catch(IOException e){
        e.printStackTrance();
    }
    
    //异步
    call.enqueue(new Callback<ResponseBody>(){
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response){
            try{
                Log.i("Callback", response.body().string());
            } catch(IOException e){
                e.printStackTrance();
            }
        }
            
        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t){
            t.printStackTrance();
        }
    });    
    

    注意:
    每个 Call 实例只能使用一次,调用 clone() 可以创建一个新的可用实例。
    Android 上,callback 在主线程执行;在JVM上,callback 在调用 HTTPRequest 的线程执行。

    移除请求

    call.cancle();
    

    学习

    Future Studio
    文件下载
    RxJava 与 Retrofit 结合的最佳实践
    okHttp 3 示例
    下载文件
    下载及进度监听

    相关文章

      网友评论

          本文标题:Retrofit 2.0 基础篇

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