@[toc] okhttp封装,拦截,mvc
登录注册
package com.example.day03_homework;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Toast;
import com.example.day03_homework.utils.MyListoner;
import com.example.day03_homework.utils.OkHttpUtils;
public class Login_activity extends AppCompatActivity {
private EditText nameUser;
private EditText pwdUser;
private CheckBox checkBox;
private Button login;
private Button register;
private Button cancel;
private boolean ischeck = false;
public static String appkey = null;
private String path_reg = "https://www.apiopen.top/createUser?";
private String path_apk = "https://www.apiopen.top/createUserKey?appId=com.github.wlsj&passwd=123456";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_activity);
initView();
}
private void initView() {
nameUser = (EditText) findViewById(R.id.name_user);
pwdUser = (EditText) findViewById(R.id.pwd_user);
checkBox = (CheckBox) findViewById(R.id.check_box);
login = (Button) findViewById(R.id.login);
register = (Button) findViewById(R.id.register);
cancel = (Button) findViewById(R.id.cancel);
SharedPreferences check1 = getSharedPreferences("check", MODE_PRIVATE);
boolean isc = check1.getBoolean("isc", false);
if (isc) {
nameUser.setText(check1.getString("name", null));
pwdUser.setText(check1.getString("pwd", null));
} else {
}
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Login_activity.this, Register_activity.class);
startActivity(intent);
}
});
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
ischeck = isChecked;
}
});
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = nameUser.getText().toString();
String pwd = pwdUser.getText().toString();
SharedPreferences check = getSharedPreferences("check", MODE_PRIVATE);
SharedPreferences.Editor edit = check.edit();
if (ischeck) {
edit.putString("name", name);
edit.putString("pwd", pwd);
edit.putBoolean("isc", ischeck);
edit.apply();
} else {
edit.putBoolean("isc", false);
edit.apply();
}
OkHttpUtils.getInstance().login(path_reg, appkey, name, pwd, new MyListoner() {
@Override
public void onSuccess(String string) {
Toast.makeText(Login_activity.this, "" + string, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(Login_activity.this, MainActivity.class);
startActivity(intent);
}
@Override
public void onDefeat(String string) {
Toast.makeText(Login_activity.this, "注册失败" + string, Toast.LENGTH_SHORT).show();
}
});
}
});
}
}
package com.example.day03_homework;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.example.day03_homework.utils.MyListoner;
import com.example.day03_homework.utils.OkHttpUtils;
import com.google.gson.Gson;
public class Register_activity extends AppCompatActivity {
private EditText nameUserReg;
private EditText pwdUserReg;
private Button allow;
private Button cancel;
private String path_reg = "https://www.apiopen.top/createUser?";
private String path_apk = "https://www.apiopen.top/createUserKey?appId=com.github.wlsj&passwd=123456";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register_activity);
initView();
}
private void initView() {
nameUserReg = (EditText) findViewById(R.id.name_user_reg);
pwdUserReg = (EditText) findViewById(R.id.pwd_user_reg);
allow = (Button) findViewById(R.id.allow);
cancel = (Button) findViewById(R.id.cancel);
Log.i("TAG", "initView: 昂首发动机返回发动机的");
OkHttpUtils.getInstance().getAppKey(path_apk, new MyListoner() {
@Override
public void onSuccess(String string) {
String appkey = new Gson().fromJson(string, Jsss.class).getData().getAppkey();
Login_activity.appkey = appkey;
Log.i("TAG", "onDefeat:啊是电饭锅 " + appkey);
}
@Override
public void onDefeat(String string) {
}
});
allow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = nameUserReg.getText().toString();
String pwd = pwdUserReg.getText().toString();
if (Login_activity.appkey != null) {
OkHttpUtils.getInstance().register(path_reg, Login_activity.appkey, name, pwd, new MyListoner() {
@Override
public void onSuccess(String string) {
Intent intent = new Intent(Register_activity.this, Login_activity.class);
startActivity(intent);
}
@Override
public void onDefeat(String string) {
}
});
}
}
});
}
}
okHttp的封装
package com.example.day03_homework.utils;
import android.os.Handler;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;
public class OkHttpUtils {
private OkHttpClient client;
private Handler handler = new Handler();
private OkHttpUtils() {
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
Interceptor interceptor = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request()
.newBuilder()
.header("token", "147741")
.build();
Response response = chain.proceed(request);
return response;
}
};
client = new OkHttpClient.Builder()
.connectTimeout(5, TimeUnit.SECONDS)
.readTimeout(5, TimeUnit.SECONDS)
.addInterceptor(interceptor)
.addInterceptor(loggingInterceptor)
.build();
}
private static OkHttpUtils okHttpUtils = null;
public static OkHttpUtils getInstance() {
if (okHttpUtils == null) {
synchronized (Object.class) {
if (okHttpUtils == null) {
okHttpUtils = new OkHttpUtils();
}
}
}
return okHttpUtils;
}
public void getAppKey(String url, final MyListoner listoner) {
Request request = new Request.Builder()
.url(url)
.get()
.build();
client.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();
handler.post(new Runnable() {
@Override
public void run() {
listoner.onSuccess(string);
}
});
}
});
}
public void login(String url, String apk, String name, String pwd, final MyListoner listoner) {
FormBody build = new FormBody.Builder()
.add("key", apk)
.add("phone", name)
.add("passwd", pwd)
.build();
Request request = new Request.Builder()
.url(url)
.post(build)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
final String message = e.getMessage();
handler.post(new Runnable() {
@Override
public void run() {
listoner.onDefeat(message);
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
listoner.onSuccess(string);
}
});
}
});
}
public void register(String url, String apk, String name, String pwd, final MyListoner listoner) {
FormBody build = new FormBody.Builder()
.add("key", apk)
.add("phone", name)
.add("passwd", pwd)
.build();
Request request = new Request.Builder()
.url(url)
.post(build)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
final String message = e.getMessage();
handler.post(new Runnable() {
@Override
public void run() {
listoner.onDefeat(message);
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
listoner.onSuccess(string);
}
});
}
});
}
public void getJson(String url, final MyListoner listoner) {
Request request = new Request.Builder()
.addHeader("all", "123123123")
.url(url)
.get()
.build();
client.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();
handler.post(new Runnable() {
@Override
public void run() {
listoner.onSuccess(string);
}
});
}
});
}
public void upload(final String hfspath, String sdpath, String servername, String type, final MyListoner listoner) {
RequestBody requestBody = RequestBody.create(MediaType.parse(type), new File(sdpath));
MultipartBody body = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", servername, requestBody)
.build();
Request request = new Request.Builder()
.url(hfspath)
.post(body)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
final String message = e.getMessage();
handler.post(new Runnable() {
@Override
public void run() {
listoner.onDefeat(message);
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
boolean successful = response.isSuccessful();
if (successful) {
handler.post(new Runnable() {
@Override
public void run() {
listoner.onSuccess("上传成功");
}
});
} else {
handler.post(new Runnable() {
@Override
public void run() {
listoner.onSuccess("上传失败");
}
});
}
}
});
}
}
mvc
model
package com.example.day03_homework.model;
import com.example.day03_homework.utils.MyListoner;
public interface DouyinModel {
void getDou(String path, MyListoner listoner);
void getUpLoad(String path, String path1, String name, String type, MyListoner listoner);
}
impl
package com.example.day03_homework.impl;
import com.example.day03_homework.model.DouyinModel;
import com.example.day03_homework.utils.MyListoner;
import com.example.day03_homework.utils.OkHttpUtils;
public class DouModelImpl implements DouyinModel {
// private String path = "http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1";
@Override
public void getDou(String path, MyListoner listoner) {
OkHttpUtils.getInstance().getJson(path, listoner);
}
@Override
public void getUpLoad(String path, String path1, String name, String type, MyListoner listoner) {
OkHttpUtils.getInstance().upload(path, path1, name, type, listoner);
}
}
适配器
package com.example.day03_homework;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
class MyAdapter extends BaseAdapter {
private List<Douyin.DataBean> list;
private Context context;
public MyAdapter(List<Douyin.DataBean> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.layout_item, null);
holder.textView = convertView.findViewById(R.id.tv_item);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView.setText(list.get(position).getName());
return convertView;
}
private class ViewHolder {
private TextView textView;
}
}