好记性不如铅笔头

android, 编程

Android应用开发笔记:HTTP的GET/POST

android项目往往都需要发送http消息,这里备份下最简单的http消息的发送和接收代码。

CONTENTS

1)HttpClinet方式GET

public class HttpUtils 
{
	public static interface onHttpResultListener
	{
		public void onHttpResult(String result, int id);
	}
	
	public static void sendGetRequest(String url, onHttpResultListener listener, int id)
	{
		if (null == url || url.trim().length() == 0 || null == listener)
		{
			return;
		}
		new GetThread(url, listener, id).start();
	}
	
	private static class GetThread extends Thread
	{
		private WeakReference<onHttpResultListener> listener = null;
		private String url;
		private int id;
		
		private GetThread(String url, onHttpResultListener p,int id) 
		{
			this.id = id;
			this.url = url;
			this.listener = new WeakReference<HttpUtils.onHttpResultListener>(p);
		}
		@Override
		public void run() 
		{
			HttpClient client = new DefaultHttpClient();
			HttpGet request = new HttpGet(url.trim());

			try {
				HttpResponse response = client.execute(request);
				if (response.getStatusLine().getStatusCode() == 200)
				{
					String result = EntityUtils.toString(response.getEntity());
					
					onHttpResultListener p = listener.get();
					if (p != null)
					{
						p.onHttpResult(result, id);
					}
				}
			} 
			catch (Exception e) 
			{
				e.printStackTrace();
				onHttpResultListener p = listener.get();
				if (p != null)
				{
					p.onHttpResult(null, id);
				}
			}
		}
	}
}

 代码写的比较简单,就是定义了线程发送http请求。调用出代码如下,可以通过ID标识不同的http请求和返回值。:

public class LocationService extends Service implements onHttpResultListener{

//=====
HttpUtils.sendGetRequest(WeatherUtils.URL_Service, this, 0);
//=====

@Override
public void onHttpResult(String result, int id)
{
}
}

2)HttpClient方式POST
3)HttpURLConnection方式GET
4)HttpURLConnection方式POST

备注
1)2,3,4小章节没有完成,后续补上。
2)参考【 http://www.cnblogs.com/lingyun1120/archive/2012/01/10/2318308.html 】【 http://blog.csdn.net/zhou699/article/details/6442186

发表评论

2 × 1 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据