判断网络请求方式工具类

HttpURLConnection网络请求方式:

以下摘自一个ListView展示数据的Demo

判断请求方式—— 一个封装好的工具类

public class MyTask extends AsyncTask<String,Void,String> {
    //申请一个接口类对象
    private Icallbacks icallbacks;
    //将无参构造设置成私有的,使之在外部不能够调用
    private MyTask() {
    }
    //定义有参构造方法
    public MyTask(Icallbacks icallbacks) {
        this.icallbacks = icallbacks;
    }


    @Override
    protected String doInBackground(String... params) {
          String str="";
        //得到请求的类型
        String type = params[1];
        if ("1".equals(type)) {//如果是"1" 执行 HttpGet请求
            //获取httpclient对象
            DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
            //准备一个get请求
//        HttpGet httpGet = new HttpGet(jsonUrl);
            HttpPost httpPost = new HttpPost(params[0]);
            try {
                //得到服务器返回的数据;
                HttpResponse response = defaultHttpClient.execute(httpPost);
                //得到状态码
                int statusCode = response.getStatusLine().getStatusCode();
                if(statusCode ==200){
                    //entiry 里面封装的数据;
                    HttpEntity entity = response.getEntity();

                    str = EntityUtils.toString(entity);


                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        } else if ("2".equals(type)) {//如果是2执行 HttpUrlConnection请求

            try {
                //1.创建Url对象
                URL url = new URL(params[0]);
                //2.打开连接
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                //3.设置
                connection.setRequestMethod("GET");
                connection.setConnectTimeout(5000);
                connection.setReadTimeout(5000);

                //4.得到响应码,进行判断
                int code = connection.getResponseCode();
                if (code == 200) {
                    //5.得到结果
                    InputStream inputStream = connection.getInputStream();
                    //调用工具类中的静态方法
                    str=StreamToString.streamTostr(inputStream,"utf-8");

                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }

        } else {

        }


        return str;
    }


    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        //解析,封装到bean,更新UI组件
        icallbacks.updataUiByjson(s);
    }
    //定义一个接口
    public  interface Icallbacks{
        //根据回传的json字符串,解析并更新页面组件
            void updataUiByjson(String jsonstr);
        }
}

以下实际应用代码————

public class Shouye extends Fragment {

    private List<Result.NewslistBean> list;
    private ListView lv;
    private MyAdapterss myAdapter;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container
            , @Nullable Bundle savedInstanceState) {


        View view = inflater.inflate(R.layout.s_f1, null);
        //获取控件
        lv=(ListView)view.findViewById(R.id.lv);
        //异步请求数据
        MyTask myTask = new MyTask(new MyTask.Icallbacks() {

            @Override
            public void updataUiByjson(String jsonstr) {
                //创建Gson
                Gson gson = new Gson();
                Result result = gson.fromJson(jsonstr, Result.class);
                //得到集合
                  list = result.getNewslist();
                //设置适配器
                setAdapter();
            }

        });
        myTask.execute(new String[]{"https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10", "2"});
        return view;
    }

    private void setAdapter() {
        if(myAdapter==null){
            //设置适配器
            myAdapter = new MyAdapterss();
            lv.setAdapter(myAdapter);
        }else{
            myAdapter.notifyDataSetChanged();
        }
    }

    class MyAdapterss extends BaseAdapter {


        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder vh;
            if (convertView==null){
                vh = new ViewHolder();
                convertView=View.inflate(getActivity(), R.layout.item_layout,null);
                vh.img=(ImageView)convertView.findViewById(R.id.image_view);
                vh.tv=(TextView)convertView.findViewById(R.id.text_title);
                convertView.setTag(vh);
            }else{
                vh= (ViewHolder) convertView.getTag();
            }
            //设置
            vh.tv.setText(list.get(position).getTitle());
            ImageLoader.getInstance().displayImage(list.get(position).getPicUrl(),vh.img, ImageloaderUtil.getImageOptions());


            return convertView;
        }

        class ViewHolder{
            private ImageView img;
            private TextView tv;

        }
    }


}

HttpClient网络请求

public class Fxain extends Fragment {

    private ListView lv;
    private List<Result.NewslistBean> list;
    private  MyAdapterss myAdapter;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.s_f1, null);
        //获取控件
        lv=(ListView)view.findViewById(R.id.lv);
        //异步请求数据
        MyTask myTask = new MyTask(new MyTask.Icallbacks() {
            @Override
            public void updataUiByjson(String jsonstr) {
                //创建Gson
                Gson gson = new Gson();
                Result result = gson.fromJson(jsonstr, Result.class);
                //得到集合
                list = result.getNewslist();
                //设置适配器
                setAdapter();
            }
        });
        myTask.execute(new String[]{"http://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10", "1"});
        return view;
    }

    private void setAdapter() {
        if(myAdapter==null){
            //设置适配器
            myAdapter = new MyAdapterss();
            lv.setAdapter(myAdapter);
        }else{
            myAdapter.notifyDataSetChanged();
        }
    }

    class MyAdapterss extends BaseAdapter {


        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder vh;
            if (convertView==null){
                vh = new ViewHolder();
                convertView=View.inflate(getActivity(), R.layout.item_layout,null);
                vh.img=(ImageView)convertView.findViewById(R.id.image_view);
                vh.tv=(TextView)convertView.findViewById(R.id.text_title);
                convertView.setTag(vh);
            }else{
                vh= (ViewHolder) convertView.getTag();
            }
            //设置
            vh.tv.setText(list.get(position).getTitle());
            ImageLoader.getInstance().displayImage(list.get(position).getPicUrl(),vh.img, ImageloaderUtil.getImageOptions());


            return convertView;
        }

        class ViewHolder{
            private ImageView img;
            private TextView tv;

        }
    }   
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值