使用AsycHttpClient请求Tomcat的新闻客户端的实现

请求Tomcat获得资源,获取后进行解析并显示:

  • 掌握开源项目AsycHttpClient的使用
  • 掌握如何进行JSON解析

主要代码

MainActivity.java :

public class MainActivity extends Activity {
    ListView lv_news;
    LinearLayout Loading;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv_news=(ListView)findViewById(R.id.lv_news);
        Loading=(LinearLayout)findViewById(R.id.loading);
        fillData3();
    }

    private void fillData3(){
        AsyncHttpClient asynchttpClient =new AsyncHttpClient();
        //服务器地址及端口 http://10.3.24.107:8080
        //本地测试用自己的ip
        asynchttpClient.get("http://10.3.24.107:8080/NewsInfo.json",new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int i, org.apache.http.Header[] headers, byte[] bytes) {
                try {
                    String json =new String (bytes ,"utf-8");
                    List<newsInfo> newsInfos = JsonParse.getNewsInfo(json);

                    if (newsInfos==null){
                        Toast.makeText(MainActivity.this,"解析失败!",Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(MainActivity.this,"获取成功!",Toast.LENGTH_SHORT).show();
                        Loading.setVisibility(View.INVISIBLE);
                        lv_news.setAdapter(new newsAdapter(MainActivity.this,newsInfos));
                    }
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) {
                Toast.makeText(getApplication(),"获取失败",Toast.LENGTH_SHORT).show();
                //System.out.println(">>>>>>>>>获取失败!");
            }
        });


    }
}

解析工具类JsonParse .java (需要导入Google的Gson ):

public class JsonParse {

    public static List<newsInfo> getNewsInfo(String json){
        Gson gson =new Gson();

        Type listType = new TypeToken<List<newsInfo>>(){


        }.getType();
    List<newsInfo> newsInfos = gson.fromJson(json,listType);

        return newsInfos;
    }
}

适配器newsAdapter .java :

public class newsAdapter extends ArrayAdapter<newsInfo>{

    public newsAdapter(Context context,  List<newsInfo> objects) {
        super(context, R.layout.news_item , objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        newsInfo news= getItem(position);
        View view;
        ViewHolder viewHolder;
        if (convertView == null) {
            //任务 补充完整
            view = LayoutInflater.from(getContext()).inflate(R.layout.news_item, null);
            viewHolder = new ViewHolder();
            //获取控件
            viewHolder.siv = (SmartImageView) view.findViewById(R.id.siv_icon);
            viewHolder.tvtitle = (TextView) view.findViewById(R.id.tv_title);
            viewHolder.tvdescription = (TextView) view.findViewById(R.id.tv_description);
            viewHolder.tvtype = (TextView) view.findViewById(R.id.tv_type);
            view.setTag(viewHolder);
        } else {
            view = convertView;
            viewHolder = (ViewHolder) view.getTag();
        }
        viewHolder.siv.setImageUrl(news.getIcon());
        viewHolder.tvtitle.setText(news.getTitle());
        viewHolder.tvdescription.setText(news.getContent());
        viewHolder.tvtype.setText(news.getType()+"");
        return view;
    }

    class ViewHolder {
        SmartImageView siv;
        TextView tvtitle;
        TextView tvdescription;
        TextView tvtype;

    }
}

进行到这里就已经差不多了。我们只需要在开启Tomcat ,把Json文件放到..\Tomcat 9.0\webapps\ROOT。下就OK了。

当我们运行Main时就会执行asynchttpClient.get();其中的第一个参数就是我们的请求地址。地址正确请求文件存在我们就会得到相应文件。然后进行解析就OK;

运行效果:
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值