当前位置: 首页 > news >正文

与设计行业相关的网站wordpress 侧边导航菜单

与设计行业相关的网站,wordpress 侧边导航菜单,绵阳低价网站建设,旅游网站专业化建设的要点1 OkHttp的工作原理 OkHttp3 的核心设计遵循以下原则: 请求与响应的分离:通过 Request 和 Response 对象解耦请求构建与结果处理。异步与同步支持:使用 Call 对象管理请求,可以同步或异步执行。高效连接复用:通过连接…

1 OkHttp的工作原理

OkHttp3 的核心设计遵循以下原则:

  1. 请求与响应的分离:通过 RequestResponse 对象解耦请求构建与结果处理。
  2. 异步与同步支持:使用 Call 对象管理请求,可以同步或异步执行。
  3. 高效连接复用:通过连接池管理 TCP 连接,支持 HTTP/2 多路复用,减少延迟。
  4. 可扩展的中间层:拦截器链路设计使得可以插入自定义逻辑。

工作流程图

  1. 构建 Request 对象
  2. 创建 Call 对象
  3. 调用同步或异步方法发送请求
  4. 通过拦截器链处理请求和响应
  5. 解析响应返回给调用者

2 核心类和接口解析

OkHttp3 的核心组件如下:

1. OkHttpClient

OkHttpClient 是 HTTP 客户端的核心类,用于管理请求和连接配置。
主要功能

  • 管理连接池
  • 分发请求
  • 配置超时、拦截器、DNS 等

代码示例

OkHttpClient client = new OkHttpClient.Builder().connectTimeout(10, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).writeTimeout(10, TimeUnit.SECONDS).build();
** Request**

Request 是 HTTP 请求的抽象,包含 URL、方法、Header、Body 等信息。
代码示例

Request request = new Request.Builder().url("https://jsonplaceholder.typicode.com/posts").get() // 默认是 GET 请求.addHeader("User-Agent", "OkHttp Example").build();
3. Call

Call 是对一次请求的封装,可以执行同步或异步操作。
代码示例

Call call = client.newCall(request);
4. Response

Response 表示 HTTP 响应,包含状态码、Header、响应体等信息。
代码示例

Response response = call.execute(); // 同步调用
5. Interceptor

拦截器用于在请求发送和响应返回时插入自定义逻辑。
常见用途

  • 添加日志
  • 缓存控制
  • 动态修改请求

代码示例

client = new OkHttpClient.Builder().addInterceptor(chain -> {Request original = chain.request();Request modified = original.newBuilder().addHeader("Authorization", "Bearer token").build();return chain.proceed(modified);}).build();

3 同步与异步请求机制

OkHttp3 支持同步和异步两种请求方式:

1. 同步请求

同步请求在当前线程执行,调用 Call.execute() 方法,线程将被阻塞直到响应返回。
代码示例

try (Response response = client.newCall(request).execute()) {System.out.println(response.body().string());
} catch (IOException e) {e.printStackTrace();
}
** 异步请求**

异步请求在独立线程中执行,调用 Call.enqueue() 方法,结果通过回调处理。
代码示例

call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {e.printStackTrace();}@Overridepublic void onResponse(Call call, Response response) throws IOException {if (response.isSuccessful() && response.body() != null) {System.out.println(response.body().string());}}
});
同步与异步对比
特性同步调用异步调用
调用方式阻塞非阻塞
使用场景简单的单线程应用多线程或高并发场景
难度易于实现需实现回调逻辑

4 Dispatcher与线程调度

Dispatcher 的作用
  • 管理异步请求的队列和执行线程池
  • 限制最大并发请求数
  • 确保请求按序完成
默认配置与修改

默认情况下,OkHttp 的最大并发请求数为 64,总主机最大请求数为 5。可以通过 Dispatcher 自定义这些限制:

Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(128);
dispatcher.setMaxRequestsPerHost(10);OkHttpClient client = new OkHttpClient.Builder().dispatcher(dispatcher).build();
监控请求队列状态

Dispatcher 提供方法获取正在运行和等待的请求信息:

System.out.println("正在运行的请求数: " + dispatcher.runningCallsCount());
System.out.println("等待队列中的请求数: " + dispatcher.queuedCallsCount());
http://www.yayakq.cn/news/198758/

相关文章:

  • ps做素材下载网站有哪些常德公司做网站
  • 网站开发一般过程如何搭建外贸网站
  • 违法网站开发人员泰安网签查询系统
  • wordpress文章中出站网页制作与网站建设完全学习手册光盘
  • 网站建设常用问题库如何查询网站的注册信息查询
  • 网站360自然排名要怎么做网站改版上线
  • php网站开发前景百度网站建设中的自由容器
  • 平台网站建设方案莱芜金点子电子版报纸
  • 网站备备份教程工商企业信息公示系统
  • android开发 网站开发婚纱摄影网页模板
  • 中国住建部和城乡建设部珠海百度seo公司
  • 正规的营销型网站建设做报名统计的网站
  • 十堰网站建设网站的策划与建设阶段
  • 网站制作手机端深圳做网站新科
  • 做爰全过程免费的网站视频网站开发终止协议书
  • 本机建设网站天津河北区做网站
  • 分享几个x站好用的关键词网站运营一月多少钱
  • 公司要求做网站wordpress 文章路径
  • 福田欧曼服务站电话八字排盘网站建设
  • 关于网站设计快站模板
  • 包头市住房和城乡建设局官方网站小程序源码什么意思
  • 佛山微网站建设报价没有网站如何做cps
  • 河南省和城乡建设厅网站绍兴市网站建设
  • 做好三步网站改版工具不降权 无忧老师东莞港货网站建设
  • 杭州做网站好的公司排名如何防止php网站被挂马
  • 中国建设门户网站纪念币ppt做的最好的网站
  • 大气红色网站医疗器械生产质量管理规范
  • 怎么把网站源码青岛谁家做网站
  • 邢台网站推广多少钱网站建设商务通什么意思
  • 专门做研究美股的财经网站wordpress仿小刀主题