美文网首页
Retrofit的使用包含RXJAVA

Retrofit的使用包含RXJAVA

作者: XINHAO_HAN | 来源:发表于2017-10-30 16:23 被阅读0次

引入:

  compile 'io.reactivex:rxjava:x.y.z'
  compile 'io.reactivex:rxandroid:1.0.1'
  compile 'com.squareup.retrofit2:retrofit:2.0.2'
  compile 'com.squareup.retrofit2:converter-gson:2.0.2'
  compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'

如果需要RXJava支持:
需添加:

 compile 'io.reactivex:rxjava:1.1.5'

RXJAVA入门: http://www.jianshu.com/p/6eb7513e4d15 (包看包会)
作者:XINHAO_HAN

单独使用Retrofit

先Build一个Retrofit类主类

 Retrofit mRetrofit= new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl("填入你的URL")
                .build();

Build完成来,我们来使用一下下:看清楚老司机要发车了~~~

 mRetrofit.create(interface.class);//唉?还没发车就遇到减速带了,我的哥?这是个啥?

别急,这是个映射关系的接口,Retrofit 一种观念,就是将本地的访问请求映射到服务器上的方法

interface.class介绍:

public interface XINHAO_XIN_Service {
    //Retrofit的使用
    @GET("userLogin.htm")
    Call<UserBeanLogin> login(
   @Query("username") String username,//Query字面意思是查询
   @Query("password") String password
);
}

Query字面意思是查询但它的深入意思,我给你看一段URL

http://localhost:8080/BY/user/login?username=123&password=123

它的意思就是把"?username"和"&password"给你自动加上了
相当于

    @GET("/user/login")//<-你的半路劲,比如我这个是和用户相关的一个URL
   + @Query("username") +string +   @Query("password")  + password

有点晕??????
别急,看这样

.baseUrl("填入你的URL") = http://localhost/BY
@GET("/user/login") = /user/login
 @Query("username") String username = [?username=123]
比图username赋值123
  @Query("password") String password = [&password =123]
 总加一块:
 http://localhost/BY/user/login?username=123&password =123

这就OK了

然后填入

XINHAO_XIN_Service xinhao_xin_service = mRetrofit.create(XINHAO_XIN_Service.class);

最后

   xinhao_xin_service.login("XINHAO_HAN","123456").enqueue(new Callback<UserBeanLogin>() {
            @Override
            public void onResponse(Call<UserBeanLogin> call, Response<UserBeanLogin> response) {

                //成功!
            }

            @Override
            public void onFailure(Call<UserBeanLogin> call, Throwable t) {
                //失败

            }
        });

//总共

 Retrofit mRetrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl("URL")
                .build();
        XINHAO_XIN_Service xinhao_xin_service = mRetrofit.create(XINHAO_XIN_Service.class);
        xinhao_xin_service.login("XINHAO_HAN","123456").enqueue(new Callback<UserBeanLogin>() {
            @Override
            public void onResponse(Call<UserBeanLogin> call, Response<UserBeanLogin> response) {

                //成功!
            }

            @Override
            public void onFailure(Call<UserBeanLogin> call, Throwable t) {
                //失败

            }
        });


//--------------------------------------外加Service
public interface XINHAO_XIN_Service {
    //Retrofit的使用
    @GET("userLogin.htm")
    Call<UserBeanLogin> login(@Query("username") String username, @Query("password") String password);


}

这就是Retrofit简单地使用,来继续说说它于RXJAVA的使用

看好,有点不一样了,看好这个service接口,看好睁大眼睛0.0.

public interface XINHAO_XIN_Service {
    //Retrofit的使用
    @GET("userLogin.htm")
   Observable<UserBeanLogin> login(@Query("username") String username, @Query("password") String password);


}

之前的 Call<UserBeanLogin> 成为了 Observable<UserBeanLogin>
使用:

  Retrofit mRetrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
    //表示受支持RXJAVA 0.0                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .baseUrl("URL")
                .build();
        XINHAO_XIN_Service xinhao_xin_service = mRetrofit.create(XINHAO_XIN_Service.class);
        xinhao_xin_service.login("123", "456")
                .subscribeOn(Schedulers.newThread()) //重新NEW一个子线程
                .observeOn(Schedulers.io())         //在IO线程运行
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscriber<T>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {
                        //请求失败
                    }

                    @Override
                    public void onNext(T t) {
                        //请求成功
                    }
                });

简单使用,到此结束啦~可根据RXJAVA教程来进阶使用
RXJAVA教程(包看包会)
RXJAVA入门: http://www.jianshu.com/p/6eb7513e4d15 (包看包会)
作者:XINHAO_HAN

相关文章

网友评论

      本文标题:Retrofit的使用包含RXJAVA

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