整個框架是基於阿帕奇的httpclient搭建的,框架類圖如下,我是用Astah Professional畫出來,將項目導入,自動生成所有類關系圖,還是挺方便的;

核心類是HttpManager和HttpAsyncTakeManager,前者基於threa實現,后者基於asyncTask實現,封裝了get和post請求,只需要實例化,並且調用request方法即可;
- HttpAsyncTaskManager http=new HttpAsyncTaskManager(this);
- String url = "http://www.12306.cn/mormhweb/kyfw/ypcx/";
- http.request(url, new StringTaskHandler() {
- @Override
- public void onNetError() {
- // TODO Auto-generated method stub
- System.out.println("---------neterror---------");
- }
- @Override
- public void onSuccess(String result) {
- // TODO Auto-generated method stub
- System.out.println("#####" + result);
- }
- @Override
- public void onFail() {
- // TODO Auto-generated method stub
- System.out.println("---------onFail---------");
- }
- });
TaskHandler<T>是一個抽象泛型類,有四個子類,StringTaskHandler,InputStreamTaskHandler,JsonObjectHandler,JsonArrayHandler,分別可以處理xml流,字符串,json對象;還可以自定義擴展TaskHandler,實現自己的邏輯
- public abstract class TaskHandler<T> {
- /** network is break */
- public abstract void onNetError();
- /**
- * have a successful response
- *
- * @param result
- */
- public abstract void onSuccess(T result);
- /** if the timeout,server error */
- public abstract void onFail();
- /**
- * parse the InputStream,must be override this
- *
- * @param result
- */
- public abstract T parseResult(InputStream result);
- }
一句代碼就搞定,請求,有木有很方便呢,整個項目我已經放在github上面了https://github.com/allen1988/android_http_framework
