Retrofit登录(MVP GET请求)

首先导入Retrofit依赖

compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.7'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'

 

activity_main布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="**商城"
        android:textColor="@android:color/holo_red_dark"
        android:textSize="25sp"
        android:layout_marginTop="20dp"
        android:layout_gravity="center"/>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="50dp"
        android:layout_gravity="center">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="手机号:"
            android:textColor="@android:color/holo_blue_bright"
            android:textSize="16sp"
            android:textStyle="bold"
            />
        <EditText
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:hint="请输入手机号"
            android:id="@+id/editphone"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="20dp"
        android:layout_gravity="center">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码:"
            android:textColor="@android:color/holo_blue_bright"
            android:textSize="16sp"
            android:textStyle="bold"
            />
        <EditText
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:hint="请输入密码"
            android:id="@+id/editpwd"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:layout_gravity="center"
        android:orientation="horizontal">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="注册"
            android:id="@+id/zc"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="登陆"
            android:id="@+id/login"/>
    </LinearLayout>
</LinearLayout>

 

net包:

API:

package com.bwie.testdemo1230.net;






public interface Api {
    //获得购物车的接口
    public static final String GETCARS = "https://www.zhaoapi.cn/product/getCarts";
    //Boss
    public static final String BOSS = "http://120.27.23.105/";
    //Login
    public static final String Login = "user/login";
    public static final String zhuce = "user/reg";
    //创建订单接口
    public static final String CREATEORDER = "https://www.zhaoapi.cn/product/createOrder";
    //获取订单列表接口
    public static final String GETORDERS = "https://www.zhaoapi.cn/product/getOrders";
    //.修改订单状态
    public static final String UPDATEORDER = "https://www.zhaoapi.cn/product/updateOrder";
}

 

onNetLint:

package com.bwie.testdemo1230.net;






public interface OnNetLint<T> {
    void onSucc(T t);
    void onFile(String str);
}

 

RetrofitUtils:

 

package com.bwie.testdemo1230.net;


import com.bwie.testdemo1230.beans.LoginBean;


import io.reactivex.Flowable;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;






public interface RetrofitUtils {
    @GET(Api.Login)
    Flowable<LoginBean> login(@Query("mobile") String mo,@Query("password") String pas);
    @POST(Api.zhuce)
    Flowable<LoginBean> zhuce(@Query("mobile") String mo,@Query("password") String pas);
}

 

RetrofitHolder:

 

package com.bwie.testdemo1230.net;


import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;






public class RetrofitHolder {
    private static OkHttpClient okHttpClient;
    private static RetrofitUtils retrofitUtils;
    static {
        initRetro();
    }


    private static void initRetro() {
        if (okHttpClient==null){
            synchronized (RetrofitHolder.class){
                if(okHttpClient==null){
                    okHttpClient=new OkHttpClient.Builder().build();
                }
            }
        }
    }


    public static RetrofitUtils getApi(){
        if(retrofitUtils==null){
            synchronized (RetrofitUtils.class){
                if(retrofitUtils==null){
                    retrofitUtils=RetrofitHolder.careteApi(RetrofitUtils.class,Api.BOSS);
                }
            }
        }
        return retrofitUtils;
    }


    public  static <T> T careteApi(Class<T> clazz,String url){
        Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.BOSS)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
        return retrofit.create(clazz);
    }
}

 

bean包:

LoginBean:

 

package com.bwie.testdemo1230.beans;




public class LoginBean {


    /**
     * msg : 登录成功
     * code : 0
     * data : {"age":null,"appkey":"90610d9b7e9abed2","appsecret":"890057611C7CE423DBEE1308C3211C5C","createtime":"2018-01-01T20:00:23","email":null,"fans":null,"follow":null,"gender":null,"icon":null,"latitude":null,"longitude":null,"mobile":"1888888888","money":null,"nickname":"辉","password":"8F669074CAF5513351A2DE5CC22AC04C","praiseNum":null,"token":"BC5E40B044FDDE1DA58B196FF0E9BD87","uid":1775,"userId":null,"username":"1888888888"}
     */


    private String msg;
    private String code;
    private DataBean data;


    public String getMsg() {
        return msg;
    }


    public void setMsg(String msg) {
        this.msg = msg;
    }


    public String getCode() {
        return code;
    }


    public void setCode(String code) {
        this.code = code;
    }


    public DataBean getData() {
        return data;
    }


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


    public static class DataBean {
        /**
         * age : null
         * appkey : 90610d9b7e9abed2
         * appsecret : 890057611C7CE423DBEE1308C3211C5C
         * createtime : 2018-01-01T20:00:23
         * email : null
         * fans : null
         * follow : null
         * gender : null
         * icon : null
         * latitude : null
         * longitude : null
         * mobile : 1888888888
         * money : null
         * nickname : 辉
         * password : 8F669074CAF5513351A2DE5CC22AC04C
         * praiseNum : null
         * token : BC5E40B044FDDE1DA58B196FF0E9BD87
         * uid : 1775
         * userId : null
         * username : 1888888888
         */


        private Object age;
        private String appkey;
        private String appsecret;
        private String createtime;
        private Object email;
        private Object fans;
        private Object follow;
        private Object gender;
        private Object icon;
        private Object latitude;
        private Object longitude;
        private String mobile;
        private Object money;
        private String nickname;
        private String password;
        private Object praiseNum;
        private String token;
        private int uid;
        private Object userId;
        private String username;


        public Object getAge() {
            return age;
        }


        public void setAge(Object age) {
            this.age = age;
        }


        public String getAppkey() {
            return appkey;
        }


        public void setAppkey(String appkey) {
            this.appkey = appkey;
        }


        public String getAppsecret() {
            return appsecret;
        }


        public void setAppsecret(String appsecret) {
            this.appsecret = appsecret;
        }


        public String getCreatetime() {
            return createtime;
        }


        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }


        public Object getEmail() {
            return email;
        }


        public void setEmail(Object email) {
            this.email = email;
        }


        public Object getFans() {
            return fans;
        }


        public void setFans(Object fans) {
            this.fans = fans;
        }


        public Object getFollow() {
            return follow;
        }


        public void setFollow(Object follow) {
            this.follow = follow;
        }


        public Object getGender() {
            return gender;
        }


        public void setGender(Object gender) {
            this.gender = gender;
        }


        public Object getIcon() {
            return icon;
        }


        public void setIcon(Object icon) {
            this.icon = icon;
        }


        public Object getLatitude() {
            return latitude;
        }


        public void setLatitude(Object latitude) {
            this.latitude = latitude;
        }


        public Object getLongitude() {
            return longitude;
        }


        public void setLongitude(Object longitude) {
            this.longitude = longitude;
        }


        public String getMobile() {
            return mobile;
        }


        public void setMobile(String mobile) {
            this.mobile = mobile;
        }


        public Object getMoney() {
            return money;
        }


        public void setMoney(Object money) {
            this.money = money;
        }


        public String getNickname() {
            return nickname;
        }


        public void setNickname(String nickname) {
            this.nickname = nickname;
        }


        public String getPassword() {
            return password;
        }


        public void setPassword(String password) {
            this.password = password;
        }


        public Object getPraiseNum() {
            return praiseNum;
        }


        public void setPraiseNum(Object praiseNum) {
            this.praiseNum = praiseNum;
        }


        public String getToken() {
            return token;
        }


        public void setToken(String token) {
            this.token = token;
        }


        public int getUid() {
            return uid;
        }


        public void setUid(int uid) {
            this.uid = uid;
        }


        public Object getUserId() {
            return userId;
        }


        public void setUserId(Object userId) {
            this.userId = userId;
        }


        public String getUsername() {
            return username;
        }


        public void setUsername(String username) {
            this.username = username;
        }
    }
}

 

model包:

LoginModel:

 

package com.bwie.testdemo1230.model;


import com.bwie.testdemo1230.beans.LoginBean;
import com.bwie.testdemo1230.net.OnNetLint;
import com.bwie.testdemo1230.net.RetrofitHolder;


import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;






public class LoginModel {
    public void getshow(String mo, String pas, final OnNetLint<LoginBean> onNetLint){
        RetrofitHolder.getApi().login(mo,pas)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<LoginBean>() {
                    @Override
                    public void accept(LoginBean loginBean) throws Exception {
                        onNetLint.onSucc(loginBean);
                    }
                });


    }


}

 

presenter包:

Loginpresenter:

 

package com.bwie.testdemo1230.presenter;


import com.bwie.testdemo1230.beans.LoginBean;
import com.bwie.testdemo1230.model.LoginModel;
import com.bwie.testdemo1230.net.OnNetLint;
import com.bwie.testdemo1230.view.IMainActivity;






public class LoginPResenter {
    IMainActivity iMainActivity;
    LoginModel loginModel;


    public LoginPResenter(IMainActivity iMainActivity) {
        this.iMainActivity = iMainActivity;
        loginModel=new LoginModel();
    }
    public void getshow(String mo, String pas){
        loginModel.getshow(mo, pas, new OnNetLint<LoginBean>() {
            @Override
            public void onSucc(LoginBean loginBean) {
                iMainActivity.getshow(loginBean);
            }


            @Override
            public void onFile(String str) {


            }
        });
    }
}

 

view包:

MainActivity:

package com.bwie.testdemo1230.view;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;


import com.bwie.testdemo1230.R;
import com.bwie.testdemo1230.beans.LoginBean;
import com.bwie.testdemo1230.presenter.LoginPResenter;


public class MainActivity extends AppCompatActivity implements IMainActivity, View.OnClickListener {


    /**
     * 请输入手机号
     */
    private EditText mEditphone;
    /**
     * 请输入密码
     */
    private EditText mEditpwd;
    /**
     * 注册
     */
    private Button mZc;
    /**
     * 登陆
     */
    private Button mLogin;
    private LinearLayout mActivityMain;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();




    }


    @Override
    public void getshow(LoginBean loginBean) {
        Toast.makeText(this,loginBean.getMsg(),Toast.LENGTH_SHORT).show();
    }


    private void initView() {
        mEditphone = (EditText) findViewById(R.id.editphone);
        mEditpwd = (EditText) findViewById(R.id.editpwd);
        mZc = (Button) findViewById(R.id.zc);
        mZc.setOnClickListener(this);
        mLogin = (Button) findViewById(R.id.login);
        mLogin.setOnClickListener(this);
        mActivityMain = (LinearLayout) findViewById(R.id.activity_main);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.zc:
                break;
            case R.id.login:
                String string = mEditphone.getText().toString();
                String string1 = mEditpwd.getText().toString();
                LoginPResenter loginPResenter = new LoginPResenter(this);
                loginPResenter.getshow(string,string1);
                break;
        }
    }
}

IMainActiivty:

 

package com.bwie.testdemo1230.view;


import com.bwie.testdemo1230.beans.LoginBean;






public interface IMainActivity {
    public void getshow(LoginBean loginBean);
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值