20141030
这个大三的时候写的,现在看起来感觉多线程上有一些不足之处,如果大家觉得可以当作参考自己改改吧。
后注:
以下的代码是JRE用的,如果用在android要修改的,比如说UrlConnection.getContentLongLength是没有的,要改成getContentLength(),还有就是一些导入的包要删改。我已经改好了android的版本。就不发了
还有就是由于本人刚从C#转JAVA对于JAVA的异常了解的不够,直接在工具类里catch异常了,然后e.print....我以为和C#一样是可以把catch到的异常直接throw出来的,于是又进行了修改。使用了throws回避异常
修改后的包android 或 JRE的想要的mail 164858843@qq.com
最近想在android上写个使用到http协议的小程序,发现没封装过的写的代码太繁琐,就自己动手花了一天时间构思封装,方便http相关操作, 提供一系列同步 、异步的方法, 也有文件下载相关的同步、异步方法 ,所有的异步方法都提供一系列的回调接口,使用线程池,方便快捷~
总共有这么几个类
Cookies.java
这个是借鉴网上的管理cookie的方法,为了实现cookie的保持,sessionID的传送,所封装的一个管理cookie的类
HttpConnProp.java
这个是http发送请求时请求报文里要设置的相关参数,直接new一个对象就是我设置的默认参数
ReturnData.java
http返回数据的的封装,有一个String是html文档,有一个HttpConnProp对象是请求完成后更新后的属性对象,特别的cookie和Referer,都是跟新后的
只要把返回的新的HttpConnProp对象给下一个连接,就可以保持session
HttpHelper.java
主类,里面有各种各样的方法
先看看我写的的工具库部分方法的使用效果:
异步get,post测试
HttpHelper.AysnGetHtml("http://www.baidu.com",
HttpConnProp.getDefaultHttpConnProp(), "gb2312",
new HttpHelper.AsynExecuteCallBack() {
@Override
public void exceptionOccored(Exception e) {
// TODO Auto-generated method stub
}
@Override
public void beforeExecute() {
// TODO Auto-generated method stub
System.out.println("执行之前");
}
@Override
public void afterExecute(ReturnData rData) {
// TODO Auto-generated method stub
System.out.println("执行之后");
//System.out.print(rData.getHtmlData());
}
});
HttpHelper.AysnPostHtml("http://web.61166.com/member/index_doajax.php",
"fmdo=login&dopost=login&userid=zhaozeyang&pwd=wodemima",
new HttpConnProp(), "gb2312",
new HttpHelper.AsynExecuteCallBack() {
@Override
public void exceptionOccored(Exception e) {
// TODO Auto-generated method stub
}
@Override
public void beforeExecute() {
// TODO Auto-generated method stub
}
@Override
public void afterExecute(ReturnData rData) {
// TODO Auto-generated method stub
System.out.println(rData.getHtmlData());
}
});
HttpHelper.shutTheThreadPoolDown();//等待所有线程完成后关闭线程池服务
下载文件测试
HttpHelper.downLoadFile("http://avatar.csdn.net/B/7/7/1_zwl230631.jpg",
"g://rfegr22