您的位置:首页 > 其它

Retrofit登录(MVP GET请求)

2018-01-01 20:52 288 查看
首先导入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
4000
.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":"18813003938","money":null,"nickname":"辉","password":"8F669074CAF5513351A2DE5CC22AC04C","praiseNum":null,"token":"BC5E40B044FDDE1DA58B196FF0E9BD87","uid":1775,"userId":null,"username":"18813003938"}

     */

    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 : 18813003938

         * money : null

         * nickname : 辉

         * password : 8F669074CAF5513351A2DE5CC22AC04C

         * praiseNum : null

         * token : BC5E40B044FDDE1DA58B196FF0E9BD87

         * uid : 1775

         * userId : null

         * username : 18813003938

         */

        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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  logging class mvp url gson