OkHttpUtils的集成

因为近期学习了OkHttpUtilts的使用,所以想在这里说明一下项目集成OkHttpUtils中遇到的坑,做一个记录,也想帮助想集成OkHttpUtils的朋友能快速找到问题,定位问题,然后解决问题。
首先,我想说明的是OkHttp和OkHttpUtils的区别,OkHttp:Square出品的HTTP请求库Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient。
尽管Google在大部分安卓版本中推荐使用HttpURLConnection,但是这个类相比HttpClient实在是太难用,太弱爆了。OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。OkHttp 处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候OkHttp会自动尝试下一个IP。OkHttp还处理了代理服务器问题和SSL握手失败问题。使用OkHttp 无需重写您程序中的网络代码。OkHttp实现了几乎java.net.HttpURLConnection一样的API。如果你用了 Apache HttpClient,则OkHttp也提供了一个对应的okhttp-apache模块。
OkHttp的官网:http://square.github.io/okhttp/
OkHttpUtils的GitHub地址:https://github.com/hongyangAndroid/okhttputils
框架的作者和代码接入
下面我说说集成方法:
1)ImportMoudle导入OkHttpUtils的okhttputils文件夹,注意是导入Moudle,而不是导入libs。
2)在Builde Gradle的Dependencies里面加 compile ‘com.zhy:okhttputils:2.6.2’。
3)在集成的okhttpUtils的build.gradle中添加

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.novoda:bintray-release:0.4.0'
    }
}

4)在Application的继承类的onCreate方法初始化OkHttpUtils。

private void initOkhttpUtils() {
        HttpsUtils.SSLParams sslParams = HttpsUtils.getSslSocketFactory(null, null, null);//ssL证书配置
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(new LoggerInterceptor("TAG"))
                .connectTimeout(50000L, TimeUnit.MILLISECONDS)
                .readTimeout(50000L, TimeUnit.MILLISECONDS)
                .cookieJar(new CookieJarImpl(new PersistentCookieStore(context))) //要在内存Cookie前
                .cookieJar(new CookieJarImpl(new MemoryCookieStore()))//内存Cookie
                .sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager)
                //其他配置
                .build();
        OkHttpUtils.initClient(okHttpClient);
    }

然后在BaseActivity和BaseFragment的成员变量里面初始化这个工具类。
以上你就已经集成OkHttpUtils到你的项目了.

 // 配置基本网络请求
            OkHttpUtils.post().url(url)
                    .id(resultCode)
                    .tag(context.getClass())
                    .params(body)
                    .addHeader("Content-type", "application/x-www-form-urlencoded")
                    .addHeader("Accept-Endoding","default")
                    .build().execute(this);

特点:
1)OkHttp是自动管理Cookie的,这个可以很方便的节省时间。
2)OkHttpUtils的基本配置都是在Application的继承类里面初始化完成,不用在考虑网络框架的封装问题,特别的方便。
3)OkHttpUtils的设计是根据需求来设计的,需要进行什么样的网络请求,自己Buidle好,然后处理回调的数据接口的好了。
下面是一些有用的博客可以研究一下:
Okhttp:http://blog.csdn.net/wu_wei_/article/details/52757435
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0326/2643.html
http://www.jianshu.com/p/6637369d02e7
http://www.jianshu.com/p/ca8a982a116b
http://www.jb51.net/article/88555.htm
http://www.cnblogs.com/whoislcj/p/5526431.html
http://blog.csdn.net/zackjary/article/details/52192558
https:http://www.tuicool.com/articles/3YNrmin
OkHttp的Cookie自动管理:
http://blog.csdn.net/sbsujjbcy/article/details/46895039
http://blog.csdn.net/u011150924/article/details/52780931

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值