zoukankan      html  css  js  c++  java
  • [HTTP那些事]网络请求API


    在Android上,原生API有两个,HttpUrlConnection和HttpClient,它们对封装Socket进行封装,让HTTP请求变得简单。这应该也算框架吧?

    想象下,如果没有HttpUrlConnection和HttpClient,一次性的API请求得有多麻烦。

    现在,我们又多了一种OkHttp,Square出品。当然底层还是封装socket。为什么,为什么还要再出一个OkHttp,吃饱了撑的?肯定不是,那究竟有什么好的?自己动手查一下吧。

    我们假设一下,应该是HttpUrlConnection和HttpClient自身有bug和缺陷,所以才会再根据如今的网络情况设计OkHttp吧。

    如果你看过Volley的源代码,就知道当SDK>9时,默认使用HttpUrlConnection,<9的就用HttpClient。 

    既然>9采用HttpUrlConnection了,那说明,再以后的版本中由Android修复了,那HttpClient呢,Apache更新维护太慢,基本要被淘汰。

    如果说你的项目还在用HttpClient,甚至还在为HttpClient的某些bug而苦恼,那么你该考虑是否该换了。毕竟现实不可能给你那么多时间去调研debug。

    当然OkHttp也是有bug的,从github上的issues就能知道,如果你用OkHttp发现了bug,又不知道如何解决,不妨去那看看。

    说了这么多,Stay想表达的有两层意思: 
    1. 不妨使用新技术来解决老技术的缺陷,就好像如果现在还有人用TabActivity,TabHost,那给人感觉一定是做外包出身的。 
    2. 尝试新技术的成本不高的,如果它开源,并且有release版本(1.0+),你都可以集成试试。新技术都是为了更好的开发而被设计出来的,就算它不是最优的解决方案,至少设计理念,解决思路是值得参考的。

    今天下午花了点时间,粗略的过了一遍OkHttp,有意思的是,为了让大家无缝集成,也是蛮拼的,额外提供HttpUrlConnection和HttpClient的写法。你只需要再依赖okhttp-urlconnection.jar或者okhttp-apache.jar就可以了。

    本来Stay是打算用OkHttp自己的请求API集成的自己的网络框架里,捣鼓了半天,怪麻烦的,API来来回回要找半天,索性就直接换成HttpUrlConnection的形式写了。 

    see, 集成起来太方便了。简单的测试了下,get,post,上传,下载都没问题。其他就没再深入了。 

    代码已在Stay讲的[自己动手写个Http框架]中更新,想尝鲜的可以去看看。

    OkHttp的示例都很简单,有很多配置(ssl, cookies, headers, timeout)没详细说明,那如果你想配置,该怎么做捏。可以看源码,也可以看一些网络请求框架如:Retrofit(Square的网络请求框架,默认集成OkHttp)源码中的API配置。


    对于这类底层API创新,还是比较少的,几年内能出一个就不错了,毕竟对HTTP协议融会贯通而且能优化的大牛少之又少。对于一般的苦逼开发者来说,能做到及时跟进已属不易。

    多尝试新技术,至少可以晚些结束自己的程序员生涯 :)

     


    有心课堂,传递给你的不仅仅是技术。✈️ www.stay4it.com

     

  • 相关阅读:
    1052 Linked List Sorting (25 分)
    1051 Pop Sequence (25 分)
    1050 String Subtraction (20 分)
    1049 Counting Ones (30 分)
    1048 Find Coins (25 分)
    1047 Student List for Course (25 分)
    1046 Shortest Distance (20 分)
    1045 Favorite Color Stripe (30 分)
    1044 Shopping in Mars (25 分)
    1055 The World's Richest (25 分)
  • 原文地址:https://www.cnblogs.com/stay/p/4857901.html
Copyright © 2011-2022 走看看