首先新建一个类new一个class-singleto 然后单例就创建完成了。然后就开始自定义一个方法名字
///1开始 ///19第二步 把括号里面的加上(这一步写完就代表封装好了)
public void getDataFromServer(String url,HttpUtilcCallback callback){
//// 19创建new一个跟下面class一样的名字
new LoadDataTask(callback).execute(url);
}
///2开个异步任务
class LoadDataTask extends AsyncTask<String,Void,String>{
///14 回调
private HttpUtilcCallback callback;
///16在创建一个大的(注意看好这个是创建的什么)
public LoadDataTask() {
}
//15创建个构造方法
public LoadDataTask(HttpUtilcCallback callback) {
this.callback = callback;
}
///3 生成这个方法
@Override
protected String doInBackground(String... strings) {
////5加网络
try {
URL url=new URL(strings[0]);///6抽方法
//7获取httpURL
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
///8加两个50000
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
///9 if判断
if (connection.getResponseCode()==HttpURLConnection.HTTP_OK){
//10return 这个写一个方法名 然后生成一个这样的方法 记得点击第二个
return inputStream2String(connection.getInputStream());
}
} catch (Exception e) {
///18在异常里这样写
callback.shibai(e.getMessage());
}
return null;
}
/////4 新建一个post方法
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
/////17 在新建的post方法写if
if (!TextUtils.isEmpty(s)){
callback.chenggong(s);
}else {
callback.shibai("没有收到数据");
}
}
}
private String inputStream2String(InputStream inputStream) throws IOException {
///11
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
int len=-1;
byte[] b=new byte[1024];
///注意这个read会报错然后你空格一个就行
while ((len=inputStream.read(b)) !=-1){
outputStream.write(b,0,len);
}
//12 继续return一个
return new String(outputStream.toByteArray());
}
////13 定义接口( 注意开头大写)
public interface HttpUtilcCallback{
void chenggong(String result);
void shibai(String errorMsg);
} 写完这个返回到那个显示的主页面调用
*********************************************************************************************
///1完成封装回来这写 第一步get前面是你写封装的类名加上get
1:
HttpUtilc httpUtilc= HttpUtilc.getInstance();
////这个直接new
listHttpCallback = new ListHttpCallback();
url1 = "http://www.xieast.com/api/news/news.php";
////写这 的时候用ctrl+alt+F
httpUtilc.getDataFromServer(url1,new ListHttpCallback());
}
///2 开始class imp是连接 然后空格一下
class ListHttpCallback implements HttpUtilc.HttpUtilcCallback{
@Override
public void chenggong(String result) {
Log.i(TAG,"result:"+result);
}
@Override
public void shibai(String errorMsg) {
}
}