public class MyTask extends AsyncTask<String,Void,String>{ //1.申请一个接口类对象 private Icallbacks icallbacks; //将无参构造设置成私有的,使之在外部不能够调用 private MyTask(){} public MyTask(Icallbacks icallbacks) { this.icallbacks = icallbacks; } @Override protected String doInBackground(String... params) { String str="";try { URL url=new URL(params[0]); HttpURLConnection connection=(HttpURLConnection)url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000);if(connection.getResponseCode()==200){ InputStream inputStream=connection.getInputStream(); //调用工具类中的静态方法 str=StreamToString.streamToStr(inputStream,"utf-8"); }else if(connection.getResponseCode()==301 || connection.getResponseCode()==302){ String location = connection.getHeaderField("location"); URL url2=new URL(location); HttpURLConnection connection2=(HttpURLConnection)url2.openConnection(); connection2.setRequestMethod("GET"); connection2.setReadTimeout(5000); connection2.setConnectTimeout(5000); Log.d("aaa","++++++++"+connection.getResponseCode()); //获取 if(connection2.getResponseCode()==200){ InputStream inputStream=connection2.getInputStream(); //调用工具类中的静态方法 str=StreamToString.streamToStr(inputStream,"utf-8"); } }} catch (Exception e) { e.printStackTrace(); }
return str; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); //3.调用接口 //解析,封装到bean,更新ui组件 icallbacks.updateUiByjson(s); } //定义一个接口 public interface Icallbacks{ /** * 根据回传的json字符串,解析并更新页面组件 * @param jsonstr */ void updateUiByjson(String jsonstr); }}/*****************************************************//调用网络请求工具类,获取数据 MyNetTask myNetTask=new MyNetTask(new Icallbacks() { @Override public void getNetdata(String jsonstr) { //gson Gson gson=new Gson(); Result result=gson.fromJson(jsonstr, Result.class); //listview要显示的数据 List<Result.DataEntity> listviewDatas = result.getData(); //轮播图要显示的数据 List<Result.DataScrollEntity> viewpagerDatas = result.getDataScroll(); //为viewpager设置适配器 viewPager.setAdapter(new MyLunBoAdapter(getActivity(),viewpagerDatas)); } }); myNetTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0"); }
AsyncTask 工具类
最新推荐文章于 2021-05-25 19:32:45 发布