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 】
发表评论