Okhttp 使用详解

如题所述

第1个回答  2022-06-30

一个最简单的OkHttpClient

一个复杂点的OkHttpClient配置

具体可配置参数见OkHttpClient.Builder类,几点注意事项:

两种拦截器的区别

官方提供的Logging Interceptor

地址: https://github.com/victorfan336/okhttp-logging-interceptor
gradle.build中添加依赖:
compile 'com.squareup.okhttp3:logging-interceptor:3.1.2'

通过Request.Builder创建请求,默认是Get请求

主要是构建RequestBody,并设置Content-Type消息头。

1.普通Post请求

比如json请求

2. 使用FormBody传递键值对参数
Content-Type: application/x-www-form-urlencoded
比如:

3. 使用RequestBody传递Json或File对象

4. 使用MultipartBody同时传递键值对参数和File对象

5. 使用MultipartBody提交分块请求

6. 自定义RequestBody实现流的上传

1、同步执行

由于android强制要求网络请求在线程中执行,所以无法使用execute

2、异步执行

1. 设置请求头

2. 设置超时

3. 设置缓存

1、对于Get请求,如果请求参数较多,自己拼接Url较为麻烦

比如

拼接结果: http://www.baidu.com/user/login/username=zhangsan&password=123456

如果能做一些封装,直接addParam(key,value)的形式则会简单很多。

2、Callback在子线程中回调,大部分时候,我们都是需要更新UI的,还需自己post到主线程中处理。
3、构建请求步骤比较多
因此,Square提供了针对OkHttp的封装库Retrofit,另外Github上也有很多第三方的封装库,比如OkGo。

相似回答