关闭

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

171人阅读 评论(0) 收藏 举报
分类:

效果图

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
查看评论

Android Xutils框架HttpUtil Get请求缓存问题

Xutils框架Http模块添加GET请求文本内容时实现LRU缓存的工作,可设置缓存默认过期时间和针对当前请求的过期时间。
  • zuiwuyuan
  • zuiwuyuan
  • 2015-08-30 21:17
  • 2489

Xutils----httpUtils请求

String path = Url.CommonUrl + Url.KeJiId + "/" + num + Url.endUrl;         HttpUtils httpUtils = new HttpUtil...
  • g471045770
  • g471045770
  • 2016-05-30 21:23
  • 457

xUtils httpUtils 注解

xUtils 中的HttpUtils全面注释 博客分类:  Android开源框架   Java代码   /*      /**   * 网络请求工具类   *...
  • Fanatic_
  • Fanatic_
  • 2016-10-19 11:46
  • 715

XUtils HttpUtils 优化线程 防止无限访问网络

比如一个ListView,需要访问网络排序数据 如果不停的点上下上下上下排序,肯定不需要不停的访问网络及更新ListView,只需要保留最后一次访问网络 HttpUtils httpUtils = null; HttpHandlerString> handler = null; p...
  • langwang2
  • langwang2
  • 2015-07-14 07:15
  • 1094

XUtils框架中HttpUtils使用Get请求时总是返回相同信息的问题解决

版本:Xutils 2014年11月11日  下载地址:https://github.com/wyouflf/xUtils 今天做开发的时候,使用pulltorefresh下拉刷新时,每次刷新一定时间内总是返回相同内容,要过一段时间后才能刷新。 解决办法: 最后发现XUtils中的Ht...
  • itas109
  • itas109
  • 2014-12-16 17:40
  • 2738

Xutils之HttpUtils使用

摘自:http://blog.csdn.net/rain_butterfly/article/details/37812371 private void get() { HttpUtils http = new HttpUtils(); http.send(HttpRequest.HttpM...
  • u010142437
  • u010142437
  • 2016-03-28 11:02
  • 5138

xUtils里使用HttpUtils时出现的无法访问HttpRequestBase的错误

1.xUtils里使用HttpUtils 2.出现的无法访问HttpRequestBase的错误 3. 在相应的module下的build.gradle中加入 android { useLibrary 'org.apache.htt...
  • EasonVincent
  • EasonVincent
  • 2016-04-26 23:13
  • 544

Android Xutils框架使用之HttpUtils

主要代码如下:/** *初始化Httputils */ private void initHttpUtils() { // 参数 联网超时时间 mHttpUtils=new HttpUtils(5000);// 设置缓存大小 int size= (int) (Runt...
  • Greathfs
  • Greathfs
  • 2016-07-10 00:11
  • 11530

Android高级之xUtils框架(二):HttpUtils

HttpUtils步骤很简单,不过需要注意几个细节。 一。步骤: 1.导入xUtils包, 2.得到HttpUtils实例, 3.调用send()或者download()进行网络请求操作, 4.取消请求。 二。注意: 1.当我们得到HttpUtils实例直接调用方法时,可能会出现错误,造成这个问题的...
  • FightFightFight
  • FightFightFight
  • 2015-11-12 10:04
  • 1345

关于Xutils网络请求重试的问题

当客户端用HttpUtils进行请求时,服务端进行断点控制,一定会出现服务器接收到多次客户端请求的问题,此问题暂时不知道如何解决。有知道的还望告知
  • Mr_Tony
  • Mr_Tony
  • 2016-04-07 17:28
  • 895
    个人资料
    • 访问:4549次
    • 积分:247
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类