Retrofit单独网络请求和Retrofit+RxJava网络请求示例

参考博客:https://www.jianshu.com/p/6922337b4f88

这是一个关于Retrofit 注解的博客,可以看一下https://blog.csdn.net/qiang_xi/article/details/53959437

这是关于Retrofit网络请求的视频:https://www.imooc.com/video/17289

无Rxjava的Retrofit的网络请求

第一步:加权限

<uses-permission android:name="android.permission.INTERNET"/>

第二步:添加依赖

 implementation 'com.squareup.retrofit2:retrofit:2.3.0'              //retrofit库
 implementation 'com.squareup.retrofit2:converter-gson:2.3.0'        //Gson解析

第三步:代码

1.请求

public void toRequest(View view) {

        //网络请求服务器基本地址
        String Server = "http://www.xn--7t0ay76a.xn--6qq986b3xl/";
        //创建一个retrofit对象
        Retrofit retrofit = new Retrofit.Builder().baseUrl(Server)
                //添加Gosn解析
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        //调用请求接口
        LoginService loginService = retrofit.create(LoginService.class);

        //调用请求登录方法
        Call call = loginService.login("admin", "123456");

        //发送请求

        call.enqueue(new Callback<LoginModel>() {
            @Override
            public void onResponse(Call<LoginModel> call, Response<LoginModel> response) {
                //成功返回
                Log.i("MainActivity", "onResponse: " + response.body().getMessage()+"--"+response.body().getFlag());
            }

            @Override
            public void onFailure(Call<LoginModel> call, Throwable t) {
                //失败返回
                Log.i("MainActivity", "onFailure: "+t.toString());
            }
        });

       /* 同步请求
        try {
            call.execute();
        } catch (IOException e) {
            e.printStackTrace();
        }*/

    }

2.请求接口

public interface LoginService {
    /**
     * Post请求
     * @param name
     * @param pwd
     * @return
     */
    @FormUrlEncoded
    @POST("requestdemo/login")      //网络请求二级地址
    Call<LoginModel> login(@Field("name") String name, @Field("pwd") String pwd);       //参数

    /**
     * Get请求
     * @param name
     * @param pwd
     * @return
     */
    @GET("requestdemo/login")
    Call<LoginModel> loginGet(@Query("name") String name, @Query("pwd") String pwd);
}

3. 创建一个model

public class LoginModel {

    /**
     * flag : 201
     * message : 请求成功!
     * data : aa
     */

    private int flag;
    private String message;
    private String data;

    public int getFlag() {
        return flag;
    }

    public void setFlag(int flag) {
        this.flag = flag;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}

下面是Retrofit+Rxjava网络请求:使用Rxjava后,返回的不是Call<T>而是一个Observable<T>的对象了。

1. 添加关于Rxjava依赖

//Rxjava and Retrofit(Retrofit+Rx需要添加的依赖)
   compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
   compile 'io.reactivex:rxandroid:1.2.1'
   compile 'io.reactivex:rxjava:1.2.1'

2.请求接口

    /**
     * Post请求
     * @param name
     * @param pwd
     * @return
     */
    @FormUrlEncoded
    @POST("requestdemo/login")      //网络请求二级地址  注意,原来的Call改成Observable
    Observable<LoginModel> login(@Field("name") String name, @Field("pwd") String pwd);       //参数

3. 请求主要代码

//网络请求服务器基本地址
        String Server = "http://www.xn--7t0ay76a.xn--6qq986b3xl/";
        //创建一个retrofit对象
        Retrofit retrofit = new Retrofit.Builder().baseUrl(Server)

                .addConverterFactory(GsonConverterFactory.create())         //Json转化器
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())   //RxJava 适配器
                .build();

        //调用请求接口
        LoginService loginService = retrofit.create(LoginService.class);
        loginService.login("admin", "123456")
                .subscribeOn(Schedulers.io())                           //IO线程加载数据
                .observeOn(AndroidSchedulers.mainThread())              //主线程显示数据
                .subscribe(new Subscriber<LoginModel>() {
                    @Override
                    public void onCompleted() {                         //请求完成

                    }

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

                    }

                    @Override
                    public void onNext(LoginModel loginModel) {         //返回数据
                        Log.i("MainActivity", "onResponse: " + loginModel.getFlag() + "--" + loginModel.getMessage() + "--" + loginModel.getData());
                    }
                });

demo地址:https://gitee.com/AndroidYaoDan/retrofit_and_rxjava.git

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值