背景
网络监控需要客户端上报网络请求的Protocol协议版本,TLS版本,IP等信息
问题
Android客户端使用的OkHttp3作为网络库,如何通过OkHttp来获取网络请求的Protocol协议,TLS版本,IP等信息?
解决方法
目前客户端网络监控埋点采集是通过自定义的MyEventListener来监听网络请求的各个阶段,并在各个阶段获取对应信息进行上报。而Protocol协议版本,TLS版本,IP等信息属于请求连接后才可获取,因此,可以在监听到connectionAcquired(Call call, Connection connection)的回调中通过connection对象获取这些信息。
具体代码如下:
public void connectionAcquired(Call call, Connection connection) {
//获取http协议版本(http1.1或http2.0)
Protocol protocol = connection.protocol();
if (protocol != null) {
http_protocol = protocol.toString();
}
//获取tls版本(TLSv1.2,TLSv1.3)
Handshake handshake = connection.handshake();
if (handshake != null) {
TlsVersion tlsVersion = hand