`
zhengaihua
  • 浏览: 21873 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

httputils+pull

阅读更多
package com.example.test___1;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import com.example.test___1.XListView.IXListViewListener;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Xml;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment1 extends Fragment {
	int index = 1;
	String url = "http://www.oschina.net/action/api/news_list?catalog=1&pageIndex="
			+ index + "&pageSize=15";

	List<News> newsList = new ArrayList<News>();
	Handler handler = new Handler(){

		private News news;
		private String name;
		private MyBaseAdapter myBaseAdapter;

		public void handleMessage(android.os.Message msg) {

			List<News> list = new ArrayList<News>();

			String xml = (String) msg.obj;
			int tag = msg.arg1;

			XmlPullParser pullParser = Xml.newPullParser();
			// 鎶奡tring鏁版嵁杞垚娴�
			ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(
					xml.getBytes());

			try {
				pullParser
						.setInput(new InputStreamReader(byteArrayInputStream));

				int eventType = pullParser.getEventType();
				// 濡傛灉涓嶆槸缁撴潫鏂囨。灏辩户缁В鏋�
				while (eventType != XmlPullParser.END_DOCUMENT) {

					switch (eventType) {
					// 璇诲埌寮�濮嬫爣绛�
					case XmlPullParser.START_TAG:
						// 鑾峰緱鏍囩鍚�
						name = pullParser.getName();

						if ("news".equals(name)) {

							news = new News();
						} else if ("title".equals(name)) {
							// 寰楀埌title鏍囩閲岀殑鏂囨湰
							news.title = pullParser.nextText();

						} else if ("body".equals(name)) {
							news.body = pullParser.nextText();

						} else if ("commentCount".equals(name)) {
							news.commentCount = pullParser.nextText();

						} else if ("author".equals(name)) {

							news.author = pullParser.nextText();
						} else if ("pubDate".equals(name)) {

							news.pubDate = pullParser.nextText();
						}

						break;

					// 璇诲埌缁撴潫鏍囩
					case XmlPullParser.END_TAG:

						name = pullParser.getName();

						if ("news".equals(name)) {
							list.add(news);
						}
						break;
					}

					eventType = pullParser.next();
				}

			} catch (XmlPullParserException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			switch (tag) {
			case 1:
				newsList.addAll(list);
				myBaseAdapter = new MyBaseAdapter(getActivity(), newsList);

				xlistView.setAdapter(myBaseAdapter);
				break;
			// 鍒锋柊
			case 2:
				newsList.clear();
				newsList.addAll(list);
				myBaseAdapter.notifyDataSetChanged();
				break;
			// 鍔犺浇鏇村
			case 3:
				newsList.addAll(list);
				myBaseAdapter.notifyDataSetChanged();
				break;

			}

		};

	};

	private XListView xlistView;

	@Override
	public View onCreateView(LayoutInflater inflater,
			@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
		View view = View.inflate(getActivity(), R.layout.fragment, null);

		xlistView = (XListView) view.findViewById(R.id.xlistView);
		xlistView.setPullLoadEnable(true);
		xlistView.setXListViewListener(new IXListViewListener() {

			@Override
			public void onRefresh() {
				index += 1;

				getData("http://www.oschina.net/action/api/news_list?catalog=1&pageIndex="
						+ index + "&pageSize=15", 2);
				// 鍋滄鍒锋柊
				xlistView.stopRefresh();
			}

			@Override
			public void onLoadMore() {
				index += 1;
				getData("http://www.oschina.net/action/api/news_list?catalog=1&pageIndex="
						+ index + "&pageSize=15", 3);
				// 鍋滄鍔犺浇鏇村
				xlistView.stopLoadMore();
			}
		});
		return view;
	}

	@Override
	public void onActivityCreated(@Nullable Bundle savedInstanceState) {

		getData(url, 1);

		super.onActivityCreated(savedInstanceState);
	}

	private void getData(String url, final int tag) {

		HttpUtils httpUtils = new HttpUtils();
		httpUtils.configCurrentHttpCacheExpiry(0);
		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) {
				// 寰楀埌鏁版嵁xml
				String result = arg0.result;
				// 缁檋andler鍙戦�佹暟鎹�
				Message msg = Message.obtain();
				msg.obj = result;
				msg.arg1 = tag;
				handler.sendMessage(msg);

			}
		});

	}

}

 

package com.example.day04;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;

import com.example.day04.adapter.Adapter;
import com.example.day04.bean.Bean;
import com.example.day04.bean.Bean.Myresult.Data;
import com.google.gson.Gson;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class MainActivity extends Activity {

	private EditText ed;
	private Button btn;
	private ListView lv;
	Handler handler = new Handler() {
		public void handleMessage(android.os.Message msg) {
			switch (msg.what) {
			case 1:
				String json = (String) msg.obj;
				Gson gson = new Gson();
				Bean bean = gson.fromJson(json, Bean.class);
				List<Data> list = bean.result.data;
				System.out.println(list + "------------------------");
				lv.setAdapter(new Adapter(list, MainActivity.this));
				break;
			case 2:
				System.out.println("请求失败");
			default:
				break;
			}
		};
	};

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

	public void Init() {
		ed = (EditText) findViewById(R.id.mname);
		btn = (Button) findViewById(R.id.button1);
		lv = (ListView) findViewById(R.id.lv);
		btn.setOnClickListener(listener);
	}

	OnClickListener listener = new OnClickListener() {
		@Override
		public void onClick(View v) {
			new Thread() {
				public void run() {
					String name = "http://apis.juhe.cn/cook/query.php";
					try {
						String path = "?menu="
								+ URLEncoder.encode(ed.getText().toString(),
										"utf-8")
								+ "&dtype=&pn=1&rn=5&albums=&=&key=f2158617de65461d79db8b1a597726d5";
						URL url = new URL(name + path);
						HttpURLConnection connection = (HttpURLConnection) url
								.openConnection();
						int code = connection.getResponseCode();
						if (code == 200) {
							InputStream is = connection.getInputStream();
							ByteArrayOutputStream array = new ByteArrayOutputStream();
							byte[] by = new byte[1024];
							int length = 0;
							while ((length = is.read(by)) != -1) {
								array.write(by, 0, length);
							}
							String str = array.toString("utf-8");
							System.out.println(str + "----------");
							Message mess = Message.obtain();
							mess.obj = str;
							mess.what = 1;
							handler.sendMessage(mess);
						} else {
							Message mess = Message.obtain();
							mess.what = 2;
							handler.sendMessage(mess);
						}
					} catch (UnsupportedEncodingException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (MalformedURLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				};
			}.start();
		}
	};
}

 

分享到:
评论

相关推荐

    HttpUtils

    `HttpUtils`类提供了一个无参数的构造函数,用于创建一个空的`HttpUtils`对象。这个构造函数没有执行任何操作(NOOP),意味着它仅仅初始化了一个`HttpUtils`实例,而不进行任何额外的设置或配置。 #### 局部字符串...

    HttpUtils 发送http请求工具类(实例讲解)

    在 HttpUtils 工具类中,有一些关键的代码需要特别注意: 1. `init()` 方法:该方法用于初始化连接池,设置最大连接数和每路由最大连接数。 2. `getHttpClient()` 方法:该方法用于获取 HttpClient 对象,用于发送 ...

    httpUtils封装上传图片api

    httpUtils封装上传图片api

    xUtils之HttpUtils的get和Post请求

    本篇文章将详细讲解xUtils中的HttpUtils模块,主要涉及GET和POST两种常见的网络请求方式。 首先,我们来看GET请求。GET请求是HTTP协议中最基础的一种请求方式,通常用于获取服务器上的资源。在xUtils中,HttpUtils...

    httpUtils等工具类

    例如,`httpUtils.get(url)`可以发送一个GET请求到指定的URL,而`httpUtils.post(url, params)`则用于发送POST请求,并携带参数。此类通常还会包含处理响应数据、设置请求头、处理异步请求等功能,以满足不同场景的...

    HttpUtils.rar

    本文将深入探讨HttpUtils类及其在Java中的应用。 HttpUtils类通常是开发者自定义的一个工具集,它封装了常见的HTTP请求方法,如GET、POST等,使得开发者在处理网络请求时能更加便捷。下面,我们将详细解析HttpUtils...

    HTTPUtils_HTTP上传下载_

    另外,为了处理上传和下载的进度显示,`HTTPUtils`可能会提供回调接口,允许调用者监听并更新进度。这些回调可能在读写流的过程中触发,传递已上传/下载的字节数。 安全性也是关键,`HTTPUtils`可能会处理HTTPS连接...

    httputils网络请求工具

    HttpUtils网络请求工具类,可以获取网络上的数据转化给JSON数据然后处理成自己的想要的数据 http://blog.csdn.net/qq_30552993/article/details/51774509

    HttpUtils工具类

    HttpUtils工具类

    XUtils-HttpUtils

    HttpUtils httpUtils = new HttpUtils(); ``` 3. **发送GET请求**:要发送GET请求,调用`send`方法并传入请求URL和回调。 ```java httpUtils.send(HttpMethod.GET, "http://example.com", new HttpCallback() { @...

    HttpUtils Java get post 工具类

    "HttpUtils Java get post 工具类" 提供了便捷的方法来发送GET和POST请求,简化了网络请求的操作。以下是对这两个主要HTTP方法的详细解释以及如何在Java中实现它们。 **1. GET方法** GET是HTTP中最常见的请求方法,...

    HttpUtils.7z

    综上所述,`HttpUtils`这个示例涵盖了网络请求的基本要素,包括认证、请求方法、重试策略,以及对OkHttp的模仿。通过学习和理解这个示例,开发者可以更好地掌握Android中的网络编程,提高应用的网络性能和用户体验。...

    HttpUtils.zip

    `HttpUtils.zip`文件提供了一种便捷的方式来使用这两种工具,旨在简化开发过程,提升开发效率。下面我们将详细探讨HttpClient、OkHttp以及HttpUtils的相关知识点。 1. **HttpClient**:HttpClient是Apache基金会...

    HttpUtils-ok.zip

    《HttpUtils-ok.zip:模拟浏览器进行网络爬虫的利器》 在互联网大数据时代,网络爬虫作为一种高效的数据获取工具,已经广泛应用于各种领域,如市场分析、舆情监测、学术研究等。而`HttpUtils-ok.zip`这个压缩包,...

    HTTPUtils工具类

    最全httpClient工具类 .

    HttpUtils 请求工具类

    自己写的基于Java自带URL请求 处理get,post 不明白的,里面直接运行可以跑,

    打造一个通用的网络请求引擎HttpUtils

    - 我们可以为HttpUtils提供静态方法,如`get(String url, Callback callback)`和`post(String url, RequestBody body, Callback callback)`,以处理GET和POST请求。Callback接口用于接收服务器的响应。 3. **构建...

    HttpUtils.java

    使用java代码的方式发出http请求并且转成json对象转成pojo对象,发送http请求,并且尝试重试请求等功能。 支持restful形式的请求方式。

    HttpUtils_java_

    下面将详细探讨`HttpUtils`类中的主要知识点。 1. **HTTP协议基础**:HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器的传输协议。它是基于TCP/IP通信协议来...

    httpUtils调用接口工具类

    http请求第三方接口工具类,sendGet请求get请求,sendPost请求post接口。map参数类型

Global site tag (gtag.js) - Google Analytics