OKHttp 重要的几个类

本文详细介绍了OKHttp中的重要类,包括OkHttpClient.Builder、Interceptor、authenticator、cache、proxy、readTimeout以及Request、Call和Response。通过Builder构建OkHttpClient,设置拦截器进行请求处理,如统一加密、URL拦截等。同时讲解了call的同步和异步调用方式,以及Response中包含的状态码、响应头和响应体信息。
摘要由CSDN通过智能技术生成

OkHttpClient.Builder
build —创建一个OKHttpClient实例

1、OkHttpClient本身不能设置参数,需要借助于其内部类Builder设置参数
(1)addInterceptor —- 添加拦截器 (在请求执行刚开始,还没有执行OKHttp核心代码之前拦截)
—-不用担心影响OKHttp请求的策略和请求速度;
—-从缓存从取数据也会执行addInterceptor;
—-允许多次重试,Chain.proceed()可以执行多次。(不要盲目重试,需要对错误加上自己的判断再重试)
(2)addNetwordInterceptor —添加网络拦截器(在连接网络之前拦截)
—-可以修改OKHttp框架自动添加一些属性(最好需要修改);
—–可以观察最终的完整请求参数(就是服务器接受到的参数);

拦截器在实际开发中的用处:1、对请求参数做统一加密处理;2、拦截不规则的URL;3、对请求或者返回的参数设置统一的编码格式;4、其他;

(3)authenticator —-身份验证
—-设置用于响应来自服务器的挑战的认证器;

(4)cache —-缓存
——设置响应缓存用于读取和写入缓存响应。

(5)proxy —-代理
—-设置即将连上http服务器代理的参数;
(6)readTimeout —设置读取超过时间的参数

Request
—–OKHttp用到的请求,Request.build
Request里面封装了请求的报文信息:请求的URL、请求的方法(如GET、POST)、请求头(如Content-Type、Cookie)以及其他。
如下图所示:

call
—–代表实际的http请求,它是连接Request和response的桥梁

(1)call既能同步获取数据也能异步获取数据

—-同步获取数据
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
execute方法会阻塞当前的线程去获取数据,返回response对象

—-异步获取数据
OKHttpClient client = new OKHttpClient();
Request request = new Request.Builder()
.url(“http://publicobject.com/helloworld.txt“)
.build();
client.newCall.(request).enqueue(new Callback() {
@Override //异步获取数据失败
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}

  @Override //异步获取数据成功,将response传入改方法
  public void onResponse(Call call, Response response) throws IOException {
    if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

    Headers responseHeaders = response.headers();
    for (int i = 0, size = responseHeaders.size(); i < size; i++) {
      System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
    }

    System.out.println(response.body().string());
  }
});

enqueue不会阻塞该线程,enqueue接收一个Callback对象;

Response
—–这个类封装了一些响应报文信息

(1)状态码,比如说(200、404等)
1xx(临时响应)
表示临时响应并需要请求者继续执行操作的状态代码。
100(继续)

2xx (成功)
表示成功处理了请求的状态代码。
200(成功)

3xx (重定向)
表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。
300 (多种选择)

4xx(请求错误)
这些状态代码表示请求可能出错,妨碍了服务器的处理。
400 (错误请求)

5xx(服务器错误)
这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
500 (服务器内部错误)

(2)响应头(Content-Type、Server等)

(3)可选的响应体

execute和enqueue都能够获得Response对象;

如下为OKHttp的流程图这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值