1.先导包
2.ok的封装类
package com.example.myapplication.model.utid;
import android.os.Handler;
import android.os.Looper;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkhttpUtil {
private static OkhttpUtil mOkhttpUtil;
private final OkHttpClient mokHttpClient;
private final Handler mHandler;
public OkhttpUtil(){
mHandler = new Handler(Looper.getMainLooper());
mokHttpClient = new OkHttpClient.Builder()
.connectTimeout(5000, TimeUnit.MILLISECONDS)
.readTimeout(5000, TimeUnit.MILLISECONDS)
.writeTimeout(5000, TimeUnit.MILLISECONDS)
.build();
}
public static OkhttpUtil getInstance(){
if(mOkhttpUtil==null){
synchronized (OkhttpUtil.class){
if(mOkhttpUtil==null) {
return new OkhttpUtil();
}
}
}
return mOkhttpUtil;
}
public void doget(String url, final OkCallback okCallback) {
Request request = new Request.Builder()
.get()
.url(url)
.build();
Call call = mokHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
if(okCallback!=null){
mHandler.post(new Runnable() {
@Override
public void run() {
okCallback.onFailure(e);
}
});
}
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
mHandler.post(new Runnable() {
@Override
public void run() {
try {
if(response !=null&&response.isSuccessful()){
String json = response.body().string();
if(okCallback !=null){
okCallback.onResponse(json);
return;
}
}
} catch (IOException e) {
e.printStackTrace();
}
if(okCallback!=null){
okCallback.onFailure(new Exception("网络异常"));
}
}
});
}
});
}
public void dopost(String url, Map<String, String> map, final OkCallback okCallback)throws IOException {
FormBody.Builder builder = new FormBody.Builder();
for (String key : map.keySet()) {
builder.add(key, map.get(key));
}
FormBody formBody = builder.build();
Request request = new Request.Builder()
.post(formBody)
.url(url)
.build();
Call call = mokHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
if(okCallback!=null){
mHandler.post(new Runnable() {
@Override
public void run() {
okCallback.onFailure(e);
}
});
}
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
mHandler.post(new Runnable() {
@Override
public void run() {
try {
if(response !=null&&response.isSuccessful()){
String json = response.body().string();
if(okCallback !=null){
okCallback.onResponse(json);
return;
}
}
} catch (IOException e) {
e.printStackTrace();
}
if(okCallback!=null){
okCallback.onFailure(new Exception("网络异常"));
}
}
});
}
});
}
public interface OkCallback {
void onFailure(Exception e);
void onResponse(String json);
}
}
3.m层
//登录的m层
package com.example.myapplication.model; import android.annotation.SuppressLint; import android.app.VoiceInteractor; import android.util.Log; import com.example.myapplication.model.Bean.LoginBean; import com.example.myapplication.model.utid.OkhttpUtil; import com.google.gson.Gson; import java.io.IOException; public class Loginmodel { private static final String TAG = "Loginmodel================"; public void login(String mobile, String password, final ILoginmodelcallbeck iLoginmodelcallbeck){ String url ="https://www.zhaoapi.cn/user/login"+"?mobile="+mobile+"&password="+password; OkhttpUtil utilInstance = OkhttpUtil.getInstance(); utilInstance.doget(url, new OkhttpUtil.OkCallback() { @Override public void onFailure(Exception e) { } @SuppressLint("LongLogTag") @Override public void onResponse(String json) { Log.d(TAG, "onResponse: "+json); Gson gson = new Gson(); LoginBean loginBean = gson.fromJson(json, LoginBean.class); String code = loginBean.getCode(); String msg = loginBean.getMsg(); if ("0".equalsIgnoreCase(code)) { if (iLoginmodelcallbeck!=null){ iLoginmodelcallbeck.onResponse(loginBean); } }else{ if (iLoginmodelcallbeck!=null){ iLoginmodelcallbeck.onFailure(msg); } } } }); } public interface ILoginmodelcallbeck { void onFailure(String e); void onResponse(LoginBean loginBean); } }
p层的model
package com.example.myapplication.model;
import com.example.myapplication.model.Bean.Regbean;
import com.example.myapplication.model.utid.OkhttpUtil;
import com.google.gson.Gson;
public class Regmodel {
public void Reg(String mobile, String password, final IRegmodelcallbeck iRegmodelcallbeck){
String url="https://www.zhaoapi.cn/user/reg"+"?mobile="+mobile+"&password="+password;
OkhttpUtil instance = OkhttpUtil.getInstance();
instance.doget(url, new OkhttpUtil.OkCallback() {
@Override
public void onFailure(Exception e) {
}
@Override
public void onResponse(String json) {
Regbean regbean = new Gson().fromJson(json, Regbean.class);
String code = regbean.getCode();
String msg = regbean.getMsg();
if ("0".equalsIgnoreCase(code)){
if(iRegmodelcallbeck!=null){
iRegmodelcallbeck.onResponseReg(regbean);
}
}else{
if(iRegmodelcallbeck!=null){
iRegmodelcallbeck.onFailurerReg(msg);
}
}
}
});
}
public interface IRegmodelcallbeck {
void onFailurerReg(String e);
void onResponseReg(Regbean regbean);
}
}
p层
package com.example.myapplication.peressen;
import com.example.myapplication.model.Bean.LoginBean;
import com.example.myapplication.model.Bean.Regbean;
import com.example.myapplication.model.Loginmodel;
import com.example.myapplication.model.Regmodel;
import com.example.myapplication.view.ILogiview;
public class Loginper {
ILogiview mimageView;
private final Loginmodel iLoginmodeL;
private final Regmodel regmodel;
public Loginper(ILogiview iLogiview){
mimageView=iLogiview;
iLoginmodeL = new Loginmodel();
regmodel = new Regmodel();
}
public void login(String modeil, String password){
iLoginmodeL.login(modeil, password, new Loginmodel.ILoginmodelcallbeck() {
@Override
public void onFailure(String e) {
if(mimageView!=null){
mimageView.onFailure(e);
}
}
@Override
public void onResponse(LoginBean loginBean) {
if (mimageView!=null){
mimageView.onResponse(loginBean);
}
}
});
}
public void Reg(String mobile,String password){
regmodel.Reg(mobile, password, new Regmodel.IRegmodelcallbeck() {
@Override
public void onFailurerReg(String e) {
if (mimageView!=null){
mimageView.onFailurerReg(e);
}
}
@Override
public void onResponseReg(Regbean regbean) {
if (mimageView!=null){
mimageView.onResponseReg(regbean);
}
}
});
}
}
v层
package com.example.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.example.myapplication.model.Bean.LoginBean;
import com.example.myapplication.model.Bean.Regbean;
import com.example.myapplication.peressen.Loginper;
import com.example.myapplication.view.ILogiview;
import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.bean.SHARE_MEDIA;
import java.util.Map;
public class MainActivity extends AppCompatActivity implements ILogiview{
private Loginper loginper;
private EditText user_ed;
private EditText password_ed;
private UMShareAPI mShareAPI;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
user_ed = findViewById(R.id.user_ed);
mShareAPI = UMShareAPI.get(this);
password_ed = findViewById(R.id.password_ed);
loginper = new Loginper(this);
}
public void dl_login(View view) {
String user = user_ed.getText().toString();
String password = password_ed.getText().toString();
loginper.login(user,password);
}
public void zc_login(View view) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
@Override
public void onFailure(String e) {
Toast.makeText(this,e,Toast.LENGTH_LONG).show();
}
@Override
public void onResponse(LoginBean loginBean) {
Toast.makeText(this,"登录成功",Toast.LENGTH_LONG).show();
}
v层接口
package com.example.myapplication.view;
import com.example.myapplication.model.Bean.LoginBean;
import com.example.myapplication.model.Bean.Regbean;
public interface ILogiview {
void onFailure(String e);
void onResponse(LoginBean loginBean);
void onFailurerReg(String e);
void onResponseReg(Regbean regbean);
}
注册的view
package com.example.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.example.myapplication.model.Bean.LoginBean;
import com.example.myapplication.model.Bean.Regbean;
import com.example.myapplication.peressen.Loginper;
import com.example.myapplication.view.ILogiview;
public class Main2Activity extends AppCompatActivity implements ILogiview{
private Loginper loginper;
private EditText zc_user_ed;
private EditText zc_password_ed;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
zc_user_ed = findViewById(R.id.zc_user_ed);
zc_password_ed = findViewById(R.id.zc_password_ed);
loginper = new Loginper(this);
}
//立即注册的点击事件
public void zc_login(View view) {
String mobile = zc_user_ed.getText().toString();
String password = zc_password_ed.getText().toString();
Log.e("tag","efererere"+password);
loginper.Reg(mobile,password);
}
@Override
public void onFailure(String e) {
}
@Override
public void onResponse(LoginBean loginBean) {
}
@Override
public void onFailurerReg(String e) {
Toast.makeText(this,e,Toast.LENGTH_SHORT).show();
}
@Override
public void onResponseReg(Regbean regbean) {
Toast.makeText(this,"注册成功",Toast.LENGTH_SHORT).show();
}
}