登录
2023-03-02 18:19:28

okht来自tp 免费编辑 添加义项

B 添加义项
?
义项指多义词面汽设项线热的不同概念,如李娜的义项:网球运动员、歌手等;非诚勿扰的义项:冯小刚执导电影、江苏卫视交友节目等。 查看详细规范>>
所属类别 :
词条暂无分类
编辑分

android网络框架之OKhttp

一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso)

用于替代HttpUrlConnection和Apache HttpClient(android API23 6.0里已移除HttpClient,现在已经打不出来)

基本信息

  • 中文名称

    okhttp

  • 外文名称

    okhttp

  • 是否开源

  • 适用平台

    android

  • 作用

    应用广泛的Android网络框架

  • 作者

    Square公司

折叠 编辑本段

允许连接到同一个主机地址的所有请求,提高请求效率

统放督环杆看共享Socket,减少对服务父住修甚失儿己逐季器的请求次数

通过连接池,减少了请求延迟

缓存响应数据来减少重复的网络请雷句那括叫这

减少了对数据流量的消耗

自动处理GZip压沿当交语帝素电间底以市

折叠 编辑本段 功能

get,post请求

文件的上传下载

固免玉叶冲载图片(内部会图片大小自动压缩)

支持请求回调,直接返回对象、对象集合

支持session的保持

折叠 编辑本段 使用步骤

Android Studio的用户:

使用Studio的图形管理进行添加.(注意:okhttp有2.0版本和3.0以后的版本,这两领她队晚个版本有的方法使用上有些许的不同)

图片图片

Eclipse的用户:

可以下载最国游坏矛则意建放社祖新的jar okhttp he latest JAR ,添加依赖就可以用了。

最新的jar地址:okio the latest JAR

注意:okhttp内部依赖okio,同时导入okio:

注意:使用网络在清单文件添加权限:<uses-permission android注绿占困刑胡阿备:name="android.permission.INTERNET"/>

(一)Http Get的使用步骤:

对于网络加载库于弱,最常见的是http get请求了,比如获取一个网页的内容。

//1.创建OkHttpClient对象,并设置连接超时时间(读取的可写可不写)

注意:这种设置超时时间是OKhttp2.0特有的通过方法来进行设置

对资突的将加曲提示:设置超时时间在OKhttp3.0以后,使用build的方委每有式进行

//02.通过build来创建一个Request请求,没有设置get,而是直接设置一个url地址,默认就是一个get方式

//03.创建一个call对象,参数就是Request请求对象,发送请求

get请求的步骤总结:首先构造一个Request对象,参数必须有个url参数,当然可殖兰议案坏命敌测三厂以通过Request.Builder温伯父剂运死零裂甲门积设置更多的参数比如:header、method等。

然后通过r批味外济克饭守践名朝equest的对象去构造得到一个Call对象,类似于将请求封装成了任务,既然是任务,就会有execute()和cancel()等方法。

最后,以异步的方式去执行请求,所以调用的是call.enqueue,将call加入调度队列,然后等待任务执行完成,在Callback中即可得到结果。

整体的写法还是比较长的,所以行帮封装肯定是要做的。

okhttp注意:

onResponse回调的参数是response,一般情况

  • 获得返回的字符串,通过response.body席何地回掌将举微兴装().string()获取;
  • 获得返回的二进制字节数组,则调用respon配置院府慢受道se.body().bytes();//通过二进制字节数组,可以转换为BItmap图片资源
  • 获得返回的inputStream,则调用流导年岁职南足留response.body().byteStream() ;这里支持大文件下载,有inputStream可以通过IO的方式写文件。

不过也说明一个问题,这个onResponse执行的线程并不是UI线程(主线程不能有耗时操作)。如果希望操作控件,还是需要使用handler等

这里是异步的方式去执行,也支持阻塞的方式,Call有一个execute()方法,可以直接调用call.execute()通过返回一个Response,最下面的代码就是

(二) Http Post 携带参数的使用步骤:

与get请求格式基本一致,就是Request的构造的不同。基于Http的文件,字符串,键值上传

注意:后面的就和上面一样了。

(三)使用post进行表单(键值对)上传

(上一个使用的Create创建RequesBody)通过Builder构造RequestBody,叫做MultipartBuilder,一般用来用来上传表单(键值对)

阅读全文