Activity主页面
@BindView(R.id.login)
Button login;
@BindView(R.id.userName)
EditText userName;
@BindView(R.id.password)
EditText password;
private String path = "http://172.17.8.100/small/user/v1/login";
private HomePresenter homePresenter;
private HashMap<String, String> mLoginMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
initView();
initData();
}
private void initView() {
}
@Override
public void onSuccess(NewsBean newsBean) {
Log.e("yxxx",""+newsBean.getMessage());
if(newsBean.getMessage().equals("登陆成功")){
}
}
private void initData() {
homePresenter = new HomePresenter();
homePresenter.setView(this);
}
@OnClick(R.id.login)
public void onViewClicked() {
String mname = userName.getText().toString();
String mpwd = password.getText().toString();
homePresenter.login(path,mname,mpwd);
}
成功返回的结果
public interface IMainView extends IBaseView{
public void onSuccess(NewsBean newsBean);
}
M层接口回调的Http网络请求Post 还有数据解析
public class HomeModel{
private static HomeModel homeModel;
CallbackData callback;
public HomeModel(){}
// private String url = "http://172.17.8.100/small/user/v1/login";
public void setCallbackInstance(CallbackData callbackInstance){
this.callback = callbackInstance;
}
public static HomeModel getInstance(){
if(homeModel == null) {
return new HomeModel();
} else {
return homeModel;
}
}
public void postData(String url,String mname, String mpwd){
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(5, TimeUnit.SECONDS)
.callTimeout(5, TimeUnit.SECONDS)
.build();
FormBody formBody = new FormBody.Builder()
.add("phone",mname)
.add("pwd",mpwd)
.build();
Request request = new Request.Builder().url(url).post(formBody).build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
callback.onFailure(e);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
Gson gson = new Gson();
NewsBean newsBean = gson.fromJson(string,NewsBean.class);
callback.onResponse(newsBean);
}
});
}
public interface CallbackData<D>{
void onResponse(D d);
void onFailure(IOException e);
}
}
P层的的逻辑代码
public class HomePresenter extends BasePresenter<IMainView> implements HomeModel.CallbackData<NewsBean>{
private final HomeModel homeModel;
public HomePresenter(){
homeModel = HomeModel.getInstance();
homeModel.setCallbackInstance(this);
}
public void register(String userName,String password){
}
@Override
public void onResponse(NewsBean newsBean) {
getView().onSuccess(newsBean);
}
@Override
public void onFailure(IOException e) {
}
public void login(String path, String mname, String mpwd) {
homeModel.postData(path,mname,mpwd);
}
}
P层抽取的基类
public class BasePresenter<V> {
private V mView;
public void setView(V v){
this.mView = v;
}
public void dettachView(){
this.mView = null;
}
public V getView(){
return mView;
}
}
简单的OKHttp请求
public void getRequestByOkHttp() {
new Thread() {
@Override
public void run() {
try {
//1.创建OkHttp的请求对象
OkHttpClient okHttpClient = new OkHttpClient();
//2.调用方法,开启请求
//3.创建请求对象
Request request = new Request.Builder().url(IContaint.path).build();
Call call = okHttpClient.newCall(request);
Response response = call.execute();
//获取响应体
String responseMsg = response.body().string();
Log.e("MainActivity", responseMsg);
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();