在Android上,原生API有两个,HttpUrlConnection和HttpClient,它们对封装Socket进行封装,让HTTP请求变得简单。这应该也算框架吧?git
想象下,若是没有HttpUrlConnection和HttpClient,一次性的API请求得有多麻烦。程序员
如今,咱们又多了一种OkHttp,Square出品。固然底层仍是封装socket。为何,为何还要再出一个OkHttp,吃饱了撑的?确定不是,那究竟有什么好的?本身动手查一下吧。github
咱们假设一下,应该是HttpUrlConnection和HttpClient自身有bug和缺陷,因此才会再根据现在的网络状况设计OkHttp吧。apache
若是你看过Volley的源代码,就知道当SDK>9时,默认使用HttpUrlConnection,<9的就用HttpClient。
既然>9采用HttpUrlConnection了,那说明,再之后的版本中由Android修复了,那HttpClient呢,Apache更新维护太慢,基本要被淘汰。cookie
若是说你的项目还在用HttpClient,甚至还在为HttpClient的某些bug而苦恼,那么你该考虑是否该换了。毕竟现实不可能给你那么多时间去调研debug。网络
固然OkHttp也是有bug的,从github上的issues就能知道,若是你用OkHttp发现了bug,又不知道如何解决,不妨去那看看。框架
说了这么多,Stay想表达的有两层意思:
1. 不妨使用新技术来解决老技术的缺陷,就好像若是如今还有人用TabActivity,TabHost,那给人感受必定是作外包出身的。
2. 尝试新技术的成本不高的,若是它开源,而且有release版本(1.0+),你均可以集成试试。新技术都是为了更好的开发而被设计出来的,就算它不是最优的解决方案,至少设计理念,解决思路是值得参考的。socket
今天下午花了点时间,粗略的过了一遍OkHttp,有意思的是,为了让你们无缝集成,也是蛮拼的,额外提供HttpUrlConnection和HttpClient的写法。你只须要再依赖okhttp-urlconnection.jar或者okhttp-apache.jar就能够了。post
原本Stay是打算用OkHttp本身的请求API集成的本身的网络框架里,捣鼓了半天,怪麻烦的,API来来回回要找半天,索性就直接换成HttpUrlConnection的形式写了。
see, 集成起来太方便了。简单的测试了下,get,post,上传,下载都没问题。其余就没再深刻了。
测试
代码已在Stay讲的[本身动手写个Http框架]中更新,想尝鲜的能够去看看。
OkHttp的示例都很简单,有不少配置(ssl, cookies, headers, timeout)没详细说明,那若是你想配置,该怎么作捏。能够看源码,也能够看一些网络请求框架如:Retrofit(Square的网络请求框架,默认集成OkHttp)源码中的API配置。
对于这类底层API创新,仍是比较少的,几年内能出一个就不错了,毕竟对HTTP协议融会贯通并且能优化的大牛少之又少。对于通常的苦逼开发者来讲,能作到及时跟进已属不易。
多尝试新技术,至少能够晚些结束本身的程序员生涯 :)
有心课堂,传递给你的不单单是技术。✈️ www.stay4it.com