1.基于OkHttp的源码Http监控
2.使用OkHttp发送HTTP请求
3.RestTemplate入门
4.OkHttp3源码详解之 okhttp连接池复用机制(一)
5.okhttp框架缓存问题,okhttp3无法使用okhttpclient.cache().get()来获取response 求解!源码
基于OkHttp的源码Http监控
在HTTP监控中,关键指标包括入队到请求结束的源码耗时、DNS查询耗时、源码socket连接耗时、源码tcp ip源码下载TLS连接耗时、源码请求发送耗时、源码响应传输耗时、源码首包耗时、源码响应解析耗时以及HTTP错误,源码区分业务错误和请求错误。源码通过可视化工具,源码可以直观地监控HTTP各阶段的源码耗时与错误分布,为优化业务HTTP请求提供数据支持。源码pagehelper源码解析
获取指标数据首先需要定位关键代码,然后插入收集代码。在没有源码或不重新打包源码的情况下,利用实现AOP的工具,通过注解和配置文件在指定函数中插入相关代码。这样可以确保监控代码与业务代码分离。
OkHttp是重庆源码出售Android中广泛使用的HTTP请求框架,其最新版本已升级到4.0.x,实现全部由Java替换为Kotlin,API使用也有不同。4.x设备不默认支持TLSV1.2,因此需在API level +和Java 1.8环境下开发,但OkHttp为支持4.x设备单独创建了3..x分支。本文使用的解题游戏源码OkHttp版本为3..3。
OkHttp的请求流程如下:首先调用OkHttpClient.Builder设置默认值,然后生成OkHttpClient实例,之后通过OkHttpClient.Builder.build创建RealCall对象。接着,调用RealCall.getResponseWithInterceptorChain方法,再调用RealInterceptorChain.proceed(Request request)发起请求。Interceptor是大狮源码OkHttp的核心功能类,将网络请求、缓存和压缩等功能统一起来,每个功能都实现为一个Interceptor,形成责任链。关键Interceptor包括ConnectInterceptor和CallServerInterceptor,分别负责连接池管理和与服务器交互。
ConnectInterceptor在连接池中查找可复用连接,若无则创建新socket,进行TLS握手,将socket包装成Okio并创建HttpCodec。CallServerInterceptor使用HttpCodec进行协议传输和解析。
获取指标的实现方式如下:针对HTTP请求耗时、异常、数据大小和状态码,通过MAOP(面向方面编程)拦截OkHttpClient.Builder的build方法加入统计Interceptor和EventListenerFactory。DNS查询耗时、连接耗时、SSL耗时,通过设置EventListener.Factory直接收集。解析耗时需在上层框架如Retrofit的parseReponse方法中收集。首包时间通过拦截读请求数据的方法来实现,即在OkHttp调用CallServerInterceptor时,关注readResponseHeaders的时机。
使用MAOP功能,在AOP配置文件中添加拦截OkHttpClient.Builder的build()方法、Http1Codec的readHeaderLine方法、ok.HttpURLConnection一样的API。如果你用了 Apache HttpClient,则OkHttp也提供了一个对应的okhttp-apache 模块。