package com.example.administrator.wderzhoukao.net; import android.os.Handler; import android.os.Looper; import java.io.IOException; import java.util.Map; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * Created by Administrator on 2018/4/23 0023. */ public class OkHttpUtils { private static OkHttpUtils instance; private final OkHttpClient okHttpClient; private final Handler handler; public OkHttpUtils() { okHttpClient = new OkHttpClient(); handler = new Handler(Looper.getMainLooper()); } //懒汉式 public static OkHttpUtils getInstance(){ if (instance==null){ instance = new OkHttpUtils(); } return instance; } public void doPost(String url, Map<String,String> params, final OnNetListener onNetListener){ FormBody.Builder builder = new FormBody.Builder(); for (Map.Entry<String,String> entry:params.entrySet()) { builder.add(entry.getKey(),entry.getValue()); } FormBody formBody = builder.build(); final Request request = new Request.Builder() .url(url) .post(formBody) .build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { onNetListener.onFailed(e); } }); } @Override public void onResponse(Call call, Response response) throws IOException { final String string = response.body().string(); handler.post(new Runnable() { @Override public void run() { onNetListener.onSuccess(string); } }); } }); }
}
package com.example.administrator.wderzhoukao.model; import com.example.administrator.wderzhoukao.net.OnNetListener; /** * Created by Administrator on 2018/4/23 0023. */ public interface LoginModel { void login(String name, String pass, OnNetListener onNetListener); }
package com.example.administrator.wderzhoukao.model; import com.example.administrator.wderzhoukao.net.API; import com.example.administrator.wderzhoukao.net.OkHttpUtils; import com.example.administrator.wderzhoukao.net.OnNetListener; import java.util.HashMap; import java.util.Map; /** * Created by Administrator on 2018/4/23 0023. */ public class LoginModelImp implements LoginModel { @Override public void login(String name, String pass, OnNetListener onNetListener) { Map<String,String> params = new HashMap<>(); params.put("mobile",name); params.put("password",pass); OkHttpUtils.getInstance().doPost(API.LGOIN_URL,params,onNetListener); } }
package com.example.administrator.wderzhoukao.presenter; /** * Created by Administrator on 2018/4/23 0023. */ public interface LoginPresenter { void login(); }
package com.example.administrator.wderzhoukao.presenter; import android.text.TextUtils; import com.example.administrator.wderzhoukao.bean.RegBean; import com.example.administrator.wderzhoukao.model.LoginModelImp; import com.example.administrator.wderzhoukao.net.OnNetListener; import com.example.administrator.wderzhoukao.view.LoginView; import com.google.gson.Gson; /** * Created by Administrator on 2018/4/23 0023. */ public class LoginPresenterImp implements LoginPresenter { private LoginView loginView; private final LoginModelImp loginModelImp; public LoginPresenterImp(LoginView loginView) { this.loginView=loginView; loginModelImp = new LoginModelImp(); } @Override public void login() { String getname = loginView.getname(); String pass = loginView.getPass(); if (TextUtils.isEmpty(getname)||TextUtils.isEmpty(pass)){ loginView.showToast("输入的账号密码不正确"); } loginModelImp.login(getname, pass, new OnNetListener() { @Override public void onSuccess(String result) { Gson gson = new Gson(); RegBean regBean = gson.fromJson(result, RegBean.class); loginView.showData(regBean.getData().getMobile()); } @Override public void onFailed(Exception e) { } }); } }
package com.example.administrator.wderzhoukao.view; /** * Created by Administrator on 2018/4/23 0023. */ public interface LoginView { String getname(); String getPass(); void showData(String name); void showToast(String str); }
package com.example.administrator.wderzhoukao; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.example.administrator.wderzhoukao.presenter.LoginPresenterImp; import com.example.administrator.wderzhoukao.view.LoginView; import com.umeng.socialize.UMAuthListener; import com.umeng.socialize.UMShareAPI; import com.umeng.socialize.bean.SHARE_MEDIA; import java.util.Map; public class LoginActivity extends BaseActivity implements LoginView{ private Button reg; private Button login; private EditText et_name; private EditText et_pass; private LoginPresenterImp loginPresenterImp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); et_name = findViewById(R.id.et_name); et_pass = findViewById(R.id.et_pass); reg = findViewById(R.id.reg); login = findViewById(R.id.login); loginPresenterImp = new LoginPresenterImp(this); login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { loginPresenterImp.login(); } }); login.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { UMShareAPI.get(LoginActivity.this).getPlatformInfo(LoginActivity.this, SHARE_MEDIA.QQ, authListener); Toast.makeText(LoginActivity.this,"点击了长按事件",Toast.LENGTH_LONG).show(); return true; } }); reg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(LoginActivity.this,MainActivity.class); startActivity(intent); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //分享或者登录的结果交给友盟处理 UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); } @Override public String getname() { return et_name.getText().toString().trim(); } @Override public String getPass() { return et_pass.getText().toString().trim(); } @Override public void showData(String name) { Toast.makeText(LoginActivity.this,name,Toast.LENGTH_LONG).show(); } @Override public void showToast(String str) { Toast.makeText(LoginActivity.this,str,Toast.LENGTH_LONG).show(); } UMAuthListener authListener = new UMAuthListener() { /** * @desc 授权开始的回调 * @param platform 平台名称 */ @Override public void onStart(SHARE_MEDIA platform) { } /** * @desc 授权成功的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 * @param data 用户资料返回 */ @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { Toast.makeText(LoginActivity.this, "成功了", Toast.LENGTH_LONG).show(); StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : data.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); sb.append(key + ":"); sb.append(value + "\n"); } Intent intent = new Intent(); Bundle bundle = new Bundle(); bundle.putString("name", sb.toString()); // intent.putExtras(bundle); // setResult(2, intent);//返回值调用函数,其中2为resultCode,返回值的标志 // finish();//传值结束 Toast.makeText(LoginActivity.this, sb.toString(), Toast.LENGTH_LONG).show(); // mTv.setText(sb.toString()); } /** * @desc 授权失败的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 * @param t 错误原因 */ @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { Toast.makeText(LoginActivity.this, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show(); } /** * @desc 授权取消的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 */ @Override public void onCancel(SHARE_MEDIA platform, int action) { Toast.makeText(LoginActivity.this, "取消了", Toast.LENGTH_LONG).show(); } }; }
注册
package com.example.administrator.okhttp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class MainActivity extends AppCompatActivity { private EditText name; private EditText pass; private Button btnlogin; private static String URL = "https://www.zhaoapi.cn/user/reg"; private static String SUBMIT_URL = "https://www.zhaoapi.cn/user/reg?mobile=%s&password=%s"; private TextView secc; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); name = findViewById(R.id.name); pass = findViewById(R.id.pass); btnlogin = findViewById(R.id.btnlogin); secc = findViewById(R.id.secc); btnlogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String name1 = name.getText().toString(); String pass1 = pass.getText().toString(); if(checkPhone(name1)&&!checkPwd(pass1)){ method(name1,pass1); Toast.makeText(MainActivity.this,"注册成功",Toast.LENGTH_LONG).show(); }else{ Toast.makeText(MainActivity.this,"账号密码输入有误",Toast.LENGTH_LONG).show(); } } }); } private void method(final String name, String pwd){ OkHttpClient okHttpClient = new OkHttpClient(); //创建Requet对象 String url = String.format(SUBMIT_URL, name, pwd); Log.e("MainActivity", "url = " + url); Request request = new Request.Builder().url(url).build(); //进行请求 okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { final String string = response.body().string(); // Log.e("zzz", "string = " + string); //Toast.makeText(MainActivity.this, string,Toast.LENGTH_LONG).show(); runOnUiThread(new Runnable() { @Override public void run() { secc.setText(name); } }); } }); } //验证手机号是否正确 private boolean checkPhone(String phone){ Pattern p = Pattern.compile("^((17[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"); Matcher m = p.matcher(phone); return m.matches(); } //验证密码是否为空 private boolean checkPwd(String pwd){ return TextUtils.isEmpty(pwd); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.okhttp.MainActivity" android:orientation="vertical"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入手机号" android:id="@+id/name"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码" android:id="@+id/pass"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btnlogin" android:text="注册"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/secc"/> </LinearLayout>