MVC分三层
View层 显示
Controller层 逻辑
Model层 存储
定义两个接口
package com.bw.day2.callback;
public interface MyCallBack {
void ok(String json);
void error(String json);
}
package com.bw.day2.model;
import com.bw.day2.callback.MyCallBack;
public interface MyModel {
void doGet(String path, MyCallBack myCallBack);
void doPost(String path,String params, MyCallBack myCallBack);
}
实现MyModel接口
package com.bw.day2.model;
import com.bw.day2.callback.MyCallBack;
public class MyRegisterModel implements MyModel{
@Override
public void doGet(String path, MyCallBack myCallBack) {
}
@Override
public void doPost(String path, String params, MyCallBack myCallBack) {
}
}
网络单例
package com.bw.day2.utils;
import com.bw.day2.callback.MyCallBack;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class HttpUtils {
private HttpUtils(){
}
private static HttpUtils httpUtils=null;
public static HttpUtils getInstance(){
if(httpUtils==null){
httpUtils=new HttpUtils();
}
return httpUtils;
}
public void postString(String url, String params, MyCallBack myCallBack){
try {
URL url1 = new URL(url);
HttpURLConnection httpURLConnection = (HttpURLConnection) url1.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setConnectTimeout(2000);
httpURLConnection.setReadTimeout(2000);
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.connect();
OutputStream outputStream = httpURLConnection.getOutputStream();
outputStream.write(params.getBytes());
outputStream.flush();
if(httpURLConnection.getResponseCode()==200){
InputStream inputStream = httpURLConnection.getInputStream();
byte[] bytes = new byte[1024];
int len=0;
StringBuilder stringBuilder = new StringBuilder();
while ((len=inputStream.read(bytes))!=-1){
stringBuilder.append(new String(bytes,0,len));
}
String json = stringBuilder.toString();
myCallBack.ok(json);
}
} catch (MalformedURLException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
异步任务调用网络单例
package com.bw.day2.utils;
import com.bw.day2.callback.MyCallBack;
public class MyPostHttpThread extends Thread {
String path;
String params;
MyCallBack myCallBack;
public MyPostHttpThread(String path, String params, MyCallBack myCallBack) {
this.path = path;
this.params = params;
this.myCallBack = myCallBack;
}
@Override
public void run() {
super.run();
HttpUtils.getInstance().postString(path, params, myCallBack);
}
}
调用异步任务