Afinal使用详解之FinalHttp
来源:互联网 发布:易武同兴号淘宝网 编辑:程序博客网 时间:2024/06/14 15:15
1.FinalHttp是什么 :顾名思义,就是一个用于实现客户端与服务器之间网络通信的类,这个类主要通过对apache的httpClient开源项目进行封装,实现在http和https协议下的GET和POST两种请求方式,以及put/delete/download等功能.FinalHttp 对 HttpClient再次封装,最简洁的就是增加了许多回调的方法,对Get 和 Post 请求进行了简化。另外一点就是FinalHttp加入线程池操作,默认的Http请求池连接为3。下面是为FinalHttp可配置的操作。
private static final ThreadFactory sThreadFactory = new ThreadFactory() {
private final AtomicInteger mCount = new AtomicInteger(1);
public Thread newThread(Runnable r) {
Thread tread = new Thread(r, “FinalHttp #” + mCount.getAndIncrement());
tread.setPriority(Thread.NORM_PRIORITY - 1);
return tread;
}
};
private static final Executor executor =Executors.newFixedThreadPool(httpThreadCount, sThreadFactory);
首先,FinalHttp采用的是线程池的方式,提供对请求的异步加载,默认的是启动3个固定的线程。而且,
tread.setPriority(Thread.NORM_PRIORITY - 1);
这句代码将这些线程的优先级设置的比普通线程低,目前不知道是出于何种考虑。
另外,在FinalHttp的构造函数中,进行了很多属性的初始化操作,包括添加请求头、设置超时的时间、设置重试次数等,代码较多,还请读者自己去阅读。
FinalHttp对 “GET”和”Post”进行了非常好的封装,所以使用起来非常简单,下面,我们简要的学习一下FinalHttp的使用。
FinalHttp finalHttp = new FinalHttp(); //获得httpFinal对象
finalHttp.addHeader("Accept-Charset", "UTF-8");// 配置http请求头 finalHttp.configCharset("UTF-8"); finalHttp.configCookieStore(null); finalHttp.configRequestExecutionRetryCount(3);// 请求错误重试次数 finalHttp.configSSLSocketFactory(null); finalHttp.configTimeout(5000);// 超时时间 finalHttp.configUserAgent("Mozilla/5.0");// 配置客户端信息
如果我们想实现最简单的GET请求,比如我们用GET方式,请求百度的主页,我们可以这样做
public void get(View view) {
//这是最简单的get请求,前面是请求地址,不要忘记添加http://
//后面是一个回调函数,比较常用的方法有下面两个
http.get(“http://www.baidu.com“, new AjaxCallBack() {
//当我们请求失败的时候会被调用,errorNo是请求失败之后,服务器的错误码,StrMsg则是错误信息 @Override public void onFailure(Throwable t, int errorNo, String strMsg) { super.onFailure(t, errorNo, strMsg); Log.d(TAG, strMsg); } //如果请求成功,则调用这个回调函数,t就是服务器返回的字符串信息 @Override public void onSuccess(String t) { super.onSuccess(t); Log.d(TAG, t); }});
}
我们可以看到,用FinalHttp实现GET网络请求,我们不需要自己开线程,因为框架已经封装好了,在内部给我们开的线程,实现网络的异步调用。其实不光有get方法,还有一个getSync,这个方法就是没有进行另起线程的请求,所以,如果我们想用getSync这个方法,我们需要自己开启线程,否则在最新版本的主线程中开启网络服务,会抛异常。
当然,这只是最简单的get方法的使用,FinalHttp一共提供了get方法的三种重载,代码如下
public void get( String url, AjaxCallBack
- Afinal使用详解之FinalHttp
- 使用afinal 中的finalhttp和finalbitmap访问网络资源+finalActivity
- FinalHttp 使用教程
- FinalHttp的使用
- FinalHttp 使用教程
- afinal框架(FinalAcitivity,FinalBitmap,FinalDb,FinalHttp 四大模块)
- Afinal详解之数据库篇FianlDb
- Afinal 0.3.32 发布,Android快速开发框架 FinalHttp模块 新增加断点续传功能
- FinalHttp 开源框架的使用
- android之Afinal框架
- Android Afinal简单使用
- Android - (Afinal)框架使用
- Afinal的详细使用
- Afinal框架的使用
- 【Android开源框架】FinalHttp的简要介绍与使用
- Afinal
- Afinal
- Afinal
- 编译安装OPENSSL和APACHE
- 主流GPU纹理格式
- jQuery对象和DOM对象的装换
- opencv 通过指针访问图像像素值,输出为空的问题
- 安卓微信开放平台分享功能
- Afinal使用详解之FinalHttp
- Android中Activity的生命周期
- Unity学习(九)Bresenham快速画直线算法
- DuiLib学习-DuiLib中的通知事件
- span在div内垂直居中
- Android 优质博文
- Android相关权限的概念
- 为RecyclerView打造通用Adapter 让RecyclerView更加好用
- tomcat启动异常--at java.util.concurrent.FutureTask.report(Unknown Source)