整个框架是基于阿帕奇的httpclient搭建的,框架类图如下,我是用Astah Professional画出来,将项目导入,自动生成所有类关系图,还是挺方便的;

自己封装的android客户端http网络框架-LMLPHP

核心类是HttpManager和HttpAsyncTakeManager,前者基于threa实现,后者基于asyncTask实现,封装了get和post请求,只需要实例化,并且调用request方法即可;

  1. HttpAsyncTaskManager http=new HttpAsyncTaskManager(this);
  2. String url = "http://www.12306.cn/mormhweb/kyfw/ypcx/";
  3. http.request(url, new StringTaskHandler() {
  4. @Override
  5. public void onNetError() {
  6. // TODO Auto-generated method stub
  7. System.out.println("---------neterror---------");
  8. }
  9. @Override
  10. public void onSuccess(String result) {
  11. // TODO Auto-generated method stub
  12. System.out.println("#####" + result);
  13. }
  14. @Override
  15. public void onFail() {
  16. // TODO Auto-generated method stub
  17. System.out.println("---------onFail---------");
  18. }
  19. });
	

TaskHandler<T>是一个抽象泛型类,有四个子类,StringTaskHandler,InputStreamTaskHandler,JsonObjectHandler,JsonArrayHandler,分别可以处理xml流,字符串,json对象;还可以自定义扩展TaskHandler,实现自己的逻辑

  1. public abstract class TaskHandler<T> {
  2. /** network is break */
  3. public abstract void onNetError();
  4. /**
  5. * have a successful response
  6. *
  7. * @param result
  8. */
  9. public abstract void onSuccess(T result);
  10. /** if the timeout,server error */
  11. public abstract void onFail();
  12. /**
  13. * parse the InputStream,must be override this
  14. *
  15. * @param result
  16. */
  17. public abstract T parseResult(InputStream result);
  18. }
一句代码就搞定,请求,有木有很方便呢,整个项目我已经放在github上面了https://github.com/allen1988/android_http_framework
05-08 15:31