精华内容
下载资源
问答
  • Retrofit2

    2020-04-04 16:34:28
    你真的会用Retrofit2吗?Retrofit2完全教程 https://www.jianshu.com/p/308f3c54abdd/

    你真的会用Retrofit2吗?Retrofit2完全教程

    https://www.jianshu.com/p/308f3c54abdd/

    展开全文
  • Retrofit2AndRxjava2 Retrofit2 + Rxjava2网络请求封装
  • retrofit2 视频

    2017-11-29 14:28:56
    retrofit2 视频 retrofit2 视频 retrofit2 视频 retrofit2 视频
  • Retrofit2介绍

    2016-10-18 10:34:35
    Retrofit2

    Retrofit2介绍

    RESTful

    在开始了解 Retrofit 的使用之前,我们需要理解RESTful概念因为 Retrofit 的初衷就是根据 RESTful风格的API 来进行封装的。关于RESTful 我们可以参考
    《RESTful API 设计指南》

    Retrofit

    Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装。把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用retrofit来进行网络请求了。官方介绍:http://square.github.io/retrofit/

    引用

    • Gradle:
    compile 'com.squareup.retrofit2:retrofit:2.1.0'

    使用

    学习一门新的技术的时候,我们首先要参考的就是官方文档,我们看看官方文档是怎么写的:http://square.github.io/retrofit/

    大家看到官方文档,很是简单粗暴,一言不合就上代码

    public interface GitHubService {
      @GET("users/{user}/repos")
      Call<List<Repo>> listRepos(@Path("user") String user);
    }
    

    从上面代码我们可知,Retrofit将HTTP API转换为interface接口的方式(Retrofit turns your HTTP API into a Java interface.)

    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://api.github.com/")
        .build();
    
    GitHubService service = retrofit.create(GitHubService.class);
    

    Retrofit 根据之前定义的接口生成一个具体的实现。通俗的讲就是我们可以将Retrofit类看作是一个“工厂类”的角色,我们在接口中提供了此次的“产品”的生产规格信息,而Retrofit则通过信息负责为我们生产。

    Call<List<Repo>> repos = service.listRepos("octocat");
    

    “Call”:通过之前封装的请求接口对象创建的任一的Call都可以发起一个同步(或异步)的HTTP请求到远程服务器。

    以上信息就是简单的Retrofit的操作,通过这个实例感受最多的就是解耦明确;使用简单。通过注解的方式描述request让人眼前一亮。

    其他注解

    • @Path
    public interface IDemoBiz
    {
     @GET("modify/{userId}")
     Call<User> modify(@Path("userId") String userId);
    }
    • @Query
      对于@GET来说,参数信息是可以直接放在url中上传的。那么你马上就反应过来了,这一样也存在严重的耦合!于是,就有了 @Query
    public interface IDemoBiz
    {
     @GET("modify/{userId}")
     Call<User> modify(@Path("userId") String userId,@Query("name") String name);
    }
    • @QueryMap
      假设我要在参数中上传10个参数呢?
    public interface IDemoBiz
    {
     @GET("modify/{userId}")
     Call<User> modify(@Path("userId") String userId,@QueryMap Map<String,String> params);
    }
    • @Post @Body Post请求上传body
    public interface IDemoBiz
    {
     @POST("add")
     Call<List<User>> get(@Body User user);
    }
    • @Post @FormUrlEncoded 表单上传

    服务器通过request.getParameter的方式直接读取参数信息

    public interface IDemoBiz
    {
      @POST("modify/{userId}")
     Call<User> modify(@Path("userId") String userId,@Field("name") String name,@Field("nickname") String nickname);
    }
    • @Headers与@Header

    可以设置HTTP的header,拿使用编码来举例

    public interface IDemoBiz
    {
      @Headers("Content-type:application/x-www-form-urlencoded;charset=UTF-8")
      @FormUrlEncoded
      @POST("modify/{userId}")
     Call<User> modify(@Path("userId") String userId,@Field("name") String name,@Field("nickname") String nickname);
    }
    

    上面代码说的使用@Headers的用法,那么@Header怎么使用呢?@Header与@Headers不同在于是动态的添加请求头信息。

     @FormUrlEncoded
      @POST("modify/{userId}")
     Call<User> modify(@Header("Content-type" String contentType),@Path("userId") String userId,@Field("name") String name,@Field("nickname") String nickname);

    HTTP的Header也可以在okhttp的拦截器中添加。

    • 其他

    当然我们还可以进行文件上传和下载,这里就不过多介绍了,网上有很多示例。

    注意事项

    特别注意如果需要继承rxjava和gson转换,则还需要引入

       compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
       compile 'com.squareup.retrofit2:converter-gson:2.1.0'

    其他格式转换引入

    Gson: com.squareup.retrofit2:converter-gson
    Jackson: com.squareup.retrofit2:converter-jackson
    Moshi: com.squareup.retrofit2:converter-moshi
    Protobuf: com.squareup.retrofit2:converter-protobuf
    Wire: com.squareup.retrofit2:converter-wire
    Simple XML: com.squareup.retrofit2:converter-simplexml
    Scalars (primitives, boxed, and String): com.squareup.retrofit2:converter-scalars
    

    如果不添加转换器会报IllegalArgumentException异常,这也会是新手开发碰到的第一个坑

    另外打个广告,我本人参考其他大神搭的一个Retrofit2.0+okhttp3+Rxjava的框架,还望多多支持,https://github.com/CentMeng/baseFramework

    展开全文
  • Retrofit2.zip

    2019-10-09 20:47:39
    Retrofit2依赖库文件,包括adapter-rxjava-2.2.0、converter-gson-2.3.0、gson-2.8.2、retrofit-2.0.2等jar包
  • Retrofit2+Rxjava2 demo案例

    热门讨论 2018-07-27 15:45:37
    MVP模式的Retrofit2+Rxjava2+OKHttp3+RxAndroid 实现网络请求的demo案例
  • rxjava2+retrofit2+mvp

    2019-02-25 15:52:21
    mvp+rxjava2+retrofit2 DbFlow 本地数据库 Glide 图片加载
  • android studio 中 java.lang.NoClassDefFoundError:retrofit2.Retrofit$Builder错误解决或java.lang.NoClassDefFoundError: retrofit2.BuiltInConverters错误解决方法 此问题在android5.0以上不会出现,在android...

    android studio 中 java.lang.NoClassDefFoundError:retrofit2.Retrofit$Builder错误解决或java.lang.NoClassDefFoundError: retrofit2.BuiltInConverters错误解决方法

    此问题在android5.0以上不会出现,在android4.0-4.4会出现。

     引起该问题的原因是: 

    项目比较大,还引用了一些第三方的包,所以导致Dex文件方法数超过限制,无法编译,于是我在Module的build.gradle中设置了multiDexEnabled true,这样就不会提示方法数超限。但是4.0+的Android系统依然无法编译运行,报上面的错误。

    一开始准备设置成false或者直接删除这行,但是还会在4.0+手机出现下图问题:

    解决方法:

    1. 在Module的build.gradle中设置了multiDexEnabled true

    2. 在Module的build.gradle中添加

    compile 'com.android.support:multidex:1.0.2'   或者手动下载该jar包放在libs中.

    3. 修改自己应用的入口Application,让其继承MultiDexApplication,并重写attachBaseContext方法。

    public class myApplication extends MultiDexApplication {
         }

    4.如果你无法继承MultiDexApplication,也可以在该application中重写attachBaseContext()方法,并添加MultiDex.install(this);

    5.如果你的应用没有自定义Application方法,可以直接在AndroidManifest.xml清单文件中做如下声明:

    <application
        ......
        android:name="android.support.multidex.MultiDexApplication">
    
        ......
    
    </application>

     

    然后问题就解决了。

    展开全文
  • retrofit2 极简封装

    2018-12-04 13:21:25
    retrofit2 极简封装,极简接入。一个请求只需三步。 1.针对不同项目需求,支持三种不同的初始化。 2.高度定制请求主体 3.支持下载,显示进度 4.支持取消请求 5.支持loding
  • Retrofit2+RxJava2

    2017-09-27 14:07:35
    一、Retrofit2 二、Retrofit2+RxJava2

    一、Retrofit2

         使用的时候怎么选择框架,可以参考下  网络框架选择   引用别人的话:

    • OkHttp  
    功能:高性能Http请求库,可把它理解成是一个封装之后的类似HttpUrlConnection的一个东西,属于同级并不是基于二者;
      性能:基于NIO和Okio,所以性能比较好,请求处理速度快(IO:阻塞式;NIO:非阻塞式;Okio是Square公司基于IO和NIO做的一个更简单、高效处理数据流的一个库);
      应用场景:重量级网络交互场景,网络请求频繁、传输数据量大(当然更推荐Retrofit,反正Retrofit是基于Okhttp的);
    • Volley   
    点击打开链接
    功能:基于HttpUrlConnection,封装了URL图片加载框架,支持图片加载,Activity和生命周期可以联动;
      性能:可扩展性好,可支持HttpClient、HttpUrlConnection和Okhttp;
      应用场景:适合轻量级网络交互,网络请求频繁,传输数据量小,不适合大数据的网络操作(比如下载视频、音频),所以不适合用来上传文件;
    • Retrofit
    功能:基于Okhttp,restful Api设计风格,可通过注解配置请求包括请求方法,请求参数,请求头返回值等等,可以搭配多种Converter将获得的数据解析&序列化,提供对RxJava的支持;
      性能:性能最好处理最快,因为是基于Okhttp封装所以扩展性差,这其实是高度封装所带来的后果;
      应用场景:可以优先选择,特别是后台Api遵循restful的风格&项目中有使用RxJava;    


    二、Retrofit2+RxJava2


     上面提到Retrofit2提供RxJava2的支持,我们通过demo来学习下Retrofit2+RxJava2的使用。


    首先定义一个Restful api风格的java接口

    public interface MyInterface {
    
        @GET("api/china")
    //    Call<List<ProvinceBean>> load();
        Observable<List<ProvinceBean>> load();
    }


    同时还要新建一个我们获取数据映射的bean类

    public class ProvinceBean {
    //  为了简单,先这样写,没有对数据封装
        public int id;
        public String name;
    }

    接着就要实例化Retrofit,绑定地址,并配置属性,

    public class MainActivity extends AppCompatActivity {
    
    
        List<ProvinceBean> list=new ArrayList<>();
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl("http://guolin.tech/")
                    .addConverterFactory(GsonConverterFactory.create())  //将json数据通过GSON和Bean类映射
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) //通过此此方法,提供和RxJava结合使用
    //                .client(new OkHttpClient())
                    .build();
            MyInterface myInterface = retrofit.create(MyInterface.class);
    
    
    //        RxJava2
            Observable<List<ProvinceBean>> observable = myInterface.load();
            observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Observer<List<ProvinceBean>>() {
                        @Override
                        public void onSubscribe(Disposable d) {
    
                        }
    
                        @Override
                        public void onNext(List<ProvinceBean> value) {
                            list=value;
                            Log.d("------->", list.size() + "");
    
                        }
    
                        @Override
                        public void onError(Throwable e) {
    
                        }
    
                        @Override
                        public void onComplete() {
    
                        }
                    });
    //        Call
          /*  Call<List<ProvinceBean>> call=myInterface.load();
            try {
    //            同步
    //            call.execute();
    //            异步
                call.enqueue(new Callback<List<ProvinceBean>>() {
                    @Override
                    public void onResponse(Call<List<ProvinceBean>> call, Response<List<ProvinceBean>> response) {
                        list=response.body();
                        Log.d("------->",list.size()+"");
                    }
    
                    @Override
                    public void onFailure(Call<List<ProvinceBean>> call, Throwable t) {
    
                    }
                });
            } catch (Exception e) {
                e.printStackTrace();
            }
        }*/
    
        }
    
    }


    一个学习的例子








    展开全文
  • rxjava2+retrofit2

    千次阅读 2018-09-03 17:40:35
    Retrofit2是square公司出品的一个网络请求库,网上有很多相关的介绍。我很久以前都想去研究了,但一直都有各种事情耽搁,现在就让我们一起去捋一捋,这篇主要讲解Retrofit2与RxJava的基本用法。 get请求 ...
  • Retrofit2 使用Demo示例

    2016-06-22 18:28:21
    Retrofit2 使用Demo
  • Retrofit2全面解析

    2019-09-03 01:10:15
    Retrofit2源码分析:架构全面解析 Retrofit2完全教程 Retrofit『使用』 Android Retrofit详解
  • Android Retrofit2实战

    2020-10-06 17:14:12
    Retrofit2已经被不知多少人写过了,搜索引擎一大堆。 这里只对Retrofit2进行实战(Get,Post),不做概述。 Retrofit注解详解 HTTP请求方法 注解 标记类 注解 参数类 注解 一 、Retrofit依赖导入 Retrofit封装...
  • Retrofit2使用

    2017-06-28 11:19:46
    在学习Retrofit之前先看一下官方文档Retrofit2官网地址:https://github.com/square/retrofit/在这里我们使用 天气网提供的接口 ...retrofit2依赖 compile 'com.squareup.retrofit2
  • Retrofit2源码解读

    万次阅读 2016-06-18 15:20:16
    Retrofit2的用法在Retrofit2.0使用详解这篇文章中已经详细介绍过了。那么在这就来看一下Retrofit2它是如何实现的。Retrofit2中它的内部网络请求是依赖于OKHttp,所以Retrofit2可以看做是对OKHttp的一次封装,那么...
  • Retrofit2原理简介

    2019-06-25 18:49:32
    Retrofit现在大家基本都用过,它不做网络请求,只...一、Retrofit2的基本使用 1、引用 implementation'com.squareup.retrofit2:retrofit:2.3.0' implementation'com.squareup.retrofit2:retrofit-converters:2....
  • Rxjava2+Retrofit2结合使用

    千次阅读 2019-05-23 01:54:57
    Rxjava2+Retrofit2+MVP的网络请求封装 rxjava2+retrofit2 封装Retrofit2+RxJava2网络请求框架 (一)Rxjava2+Retrofit完美封装 使用Retrofit2 RxJava 文件上传 Retrofit2与RxJava用法大全 这是一份很详细的 ...
  • Android Retrofit2学习

    2019-05-23 00:13:39
    Android Retrofit2简单使用学习 Retrofit2网络框架的使用(一)基本使用
  • Retrofit2+Rxjava2+MVP demo

    2017-12-01 17:06:42
    此demo使用MVP架构,添加Retrofit2+Rxjava2的网络请求框架,个人觉得这个框架很实用
  • Retrofit2框架学习

    2019-08-23 15:38:25
    一、Retrofit概述 Retrofit是一款开源网络框架,由Square公司推出的,目前最新版本是Retrofit2,源码地址 https://github.com/square/retrofit Retrofit的推出,主要是为了对Square公司推出的另一款...Retrofit2+O...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,766
精华内容 3,906
关键字:

retrofit2