第三方xUtils中HttpUtils请求网络数据与Pull解析

效果图

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.HttpHandler;
import com.lidroid.xutils.http.HttpHandler.State;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.yang.bean.Books;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.util.Xml;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

    private boolean isFlag = true;
    private List<Books> list;
    private String tagNmae = "";
    private Books books;
    private int eventType;
    private ListView lv;
    //
    private List<String> name = null;
    private Handler handler=new Handler(){
        public void handleMessage(android.os.Message msg) {

            List<Books> list=(List<Books>) msg.obj;
            name = new ArrayList<String>();
            for (Books books : list) {
                name.add(books.getCatalog());
            }

            ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_expandable_list_item_1, name);
            lv.setAdapter(adapter);
        };
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv = (ListView) findViewById(R.id.main_lv);

        new Thread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                getHttpUtils();
            }
        }).start();
    }

    private void getHttpUtils() {
        // TODO Auto-generated method stub
        HttpUtils httpUtils = new HttpUtils();
        // 设置当前请求的缓存时间
        httpUtils.configCurrentHttpCacheExpiry(0 * 1000);
        // 设置线程数
        httpUtils.configRequestThreadPoolSize(10);
        httpUtils.configResponseTextCharset("utf-8");
        httpUtils
                .send(HttpMethod.GET,
                        "url",
                        new RequestCallBack<String>() {

                            @Override
                            public void onFailure(HttpException arg0,
                                    String arg1) {
                                // TODO Auto-generated method stub

                            }

                            @Override
                            public void onSuccess(ResponseInfo<String> arg0) {
                                // TODO Auto-generated method stub
                                // Log.i("yang", arg0.result);

                                List<Books> book = getXmlBook(arg0.result);
                                Message msg=new Message();
                                msg.obj = book;
                                handler.sendMessage(msg);
                            }

                        });
    }

    protected List<Books> getXmlBook(String result) {
        // TODO Auto-generated method stub
        try {
            XmlPullParser xml = Xml.newPullParser();
            InputStream in = new ByteArrayInputStream(result.getBytes("UTF-8"));
            xml.setInput(in, "UTF-8");

            eventType = xml.getEventType();

            while (isFlag) {
                switch (eventType) {
                case XmlPullParser.START_DOCUMENT:

                    list = new ArrayList<Books>();
                    break;
                case XmlPullParser.START_TAG:
                    tagNmae  = xml.getName();
                    if(tagNmae.equals("item")){
                        books = new Books();
                    }
                    break;
                case XmlPullParser.TEXT:

                    if(tagNmae.equals("id")){
                        books.setId(xml.getText());
                    }else if(tagNmae.equals("catalog")){
                        books.setCatalog(xml.getText());
                    }
                    break;
                case XmlPullParser.END_TAG:

                    tagNmae = xml.getName();
                    if(tagNmae.equals("item")){
                        list.add(books);
                    }
                    tagNmae = "";
                    break;
                case XmlPullParser.END_DOCUMENT:

                    //Log.i("yang", list.toString());
                    isFlag = false;
                    return list;

                }
                eventType = xml.next();
            }
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xUtils是一个Android开发框架,它提供了许多常用的工具类和功能模块,其包括网络请求功能。xUtils网络请求模块支持HTTPHTTPs、FTP等协议,并提供了异步请求、文件上传下载、缓存等功能。 要使用xUtils进行网络请求,首先需要在项目的build.gradle文件添加xUtils的依赖: ```groovy dependencies { // 其他依赖... implementation 'org.xutils:xutils:3.7.7' } ``` 接下来,在你的代码可以使用xUtils提供的HttpUtils类进行网络请求。示例代码如下: ```java import org.xutils.common.Callback; import org.xutils.http.RequestParams; import org.xutils.x; // 发起GET请求 RequestParams params = new RequestParams("http://www.example.com/api"); x.http().get(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { // 请求成功的回调 } @Override public void onError(Throwable ex, boolean isOnCallback) { // 请求错误的回调 } @Override public void onCancelled(CancelledException cex) { // 请求取消的回调 } @Override public void onFinished() { // 请求完成的回调,无论成功或失败都会调用 } }); // 发起POST请求 RequestParams params = new RequestParams("http://www.example.com/api"); params.addBodyParameter("key1", "value1"); params.addBodyParameter("key2", "value2"); x.http().post(params, new Callback.CommonCallback<String>() { // 回调方法同上 }); ``` 以上代码示例了如何使用xUtils进行GET和POST请求,通过实现Callback接口可以处理请求的结果。你可以根据自己的需求进行相应的处理和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值