网络封装类(01)

 首先新建一个类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) {

       }
   }

猜你喜欢

转载自blog.csdn.net/qq_41880256/article/details/81239570