OkHttpUtols
public class OkHttpUtils {
private static OkHttpUtils okHttpUtils;
private OkHttpClient okHttpClient;
private OkHttpUtils(){
okHttpClient= new OkHttpClient.Builder()
.writeTimeout(2000,TimeUnit.MICROSECONDS)
.build();
}
public static OkHttpUtils getinstance(){
if(okHttpUtils==null){
synchronized (OkHttpUtils.class){
if(okHttpUtils==null){
okHttpUtils=new OkHttpUtils();
}
}
}
return okHttpUtils;
}
//get封装
public void getData(String url,HashMap<String,String>parms,final RequestCallBack requestCallBack ){
StringBuilder urlsb = new StringBuilder();
String allUrl = "";
for (Map.Entry<String,String> stringStringEntry:parms.entrySet() ){
urlsb.append("?").append(stringStringEntry.getKey()).append("=").append(stringStringEntry.getValue()).append("&");
}
allUrl = url+urlsb.toString().substring(0,urlsb.length()-1);
System.out.println("url:" + allUrl);
Request request =new Request.Builder()
.url(allUrl)
.get()
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
//请求失败
@Override
public void onFailure(Call call, IOException e) {
if(requestCallBack!=null){
requestCallBack.failure(call,e);
}
}
//请求成功
@Override
public void onResponse(Call call, Response response) throws IOException {
if(requestCallBack!=null){
requestCallBack.onResponse(call,response);
}
}
});
}
//post请求方式
public void postData(String url,HashMap<String,String>parms,final RequestCallBack requestCallBack){
FormBody.Builder formBodybuilder = new FormBody.Builder();
if(parms!=null && parms.size()>0){
for (Map.Entry<String,String> stringStringEntry:parms.entrySet() ){
formBodybuilder.add(stringStringEntry.getKey(),stringStringEntry.getValue());
}
}
Request request = new Request.Builder()
.url(url)
.post(formBodybuilder.build())
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
if (requestCallBack != null) {
requestCallBack.failure(call, e);
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (requestCallBack != null) {
requestCallBack.onResponse(call,response);
}
}
});
}
}
RequestCallBack
interface RequestCallBack {
void failure(Call call, IOException e);
void onResponse(Call call, Response response);
model
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
public void login(HashMap<String,String> parms ,final LoginCallback callback){
OkHttpUtils.getinstance().postData(API.LOGIN_URL, parms, new RequestCallBack() {
@Override
public void failure(Call call, IOException e) {
if(callback!=null){
callback.failure("请求失败");
}
}
@Override
public void onResponse(Call call, Response response) {
if(response.code()==200){
String request = null;
try {
String s = response.body().string();
JsonRequest(s,callback);
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
}
private void JsonRequest(String s, final LoginCallback callback) {
final LoginBean bean = new Gson().fromJson(s, LoginBean.class);
handler.post(new Runnable() {
@Override
public void run() {
if(callback!=null){
callback.loginSuccess(bean);
}
}
});
}
public interface LoginCallback{
void failure(String errorMsg);//网络请求失败
void loginSuccess(LoginBean userBean);
}
}
View
interface ILoginView {
void mobileVerify();//校验手机号合法
void mobileEmpty();
void pwdVerify();//校验密码
void success(LoginBean userBean);//请求成功
void failure(String msg);//请求失败
Loginbean
LoginBean {
public String msg;
public String code;
public User data;
public class User{
public String nickname;
public String icon;
public String mobile;
}
LoginPerstenr
private LoginModel loginModel;
private ILoginView iLoginView;
public LoginPresenter(ILoginView iLoginView) {
this.loginModel = new LoginModel();
this.iLoginView = iLoginView;
}
public void Login(HashMap<String,String>parms) {
loginModel.login(parms, new LoginModel.LoginCallback() {
@Override
public void failure(String errorMsg) {
iLoginView.failure(errorMsg);
}
@Override
public void loginSuccess(LoginBean userBean) {
iLoginView.success(userBean);
}
});
}
LoginActivity
public void login(View view) {
HashMap<String,String> parms = new HashMap<>();
parms.put("mobile",dl_phone.getText().toString());
parms.put("password",dl_pwd.getText().toString());
presenter.Login(parms);
}
@Override
public void mobileVerify() {
Toast.makeText(this,"账号格式不对",Toast.LENGTH_LONG).show();
}
@Override
public void mobileEmpty() {
}
@Override
public void pwdVerify() {
}
@Override
public void success(LoginBean userBean) {
Intent intent = new Intent(LoginActivity.this,ShowActivity.class);
startActivity(intent);
}
@Override