@@ -60,97 +60,99 @@ public okhttp3.EventListener create(Call call) {
60
60
public void init (QCloudHttpClient .Builder b , HostnameVerifier hostnameVerifier ,
61
61
final Dns dns , HttpLogger httpLogger ) {
62
62
super .init (b , hostnameVerifier , dns , httpLogger );
63
- HttpLoggingInterceptor logInterceptor = new HttpLoggingInterceptor (httpLogger );
64
- if (BuildConfig .DEBUG ){
65
- logInterceptor .setLevel (HttpLoggingInterceptor .Level .BODY );
66
- } else {
67
- logInterceptor .setLevel (HttpLoggingInterceptor .Level .HEADERS );
68
- }
69
- OkHttpClient .Builder builder = b .mBuilder ;
70
- builder .interceptors ().clear ();
71
- RedirectInterceptor redirectInterceptor = new RedirectInterceptor ();
72
- builder .followRedirects (false )
73
- .followSslRedirects (true )
74
- .hostnameVerifier (hostnameVerifier )
75
- .dns (dns )
76
- .connectTimeout (b .connectionTimeout , TimeUnit .MILLISECONDS )
77
- .readTimeout (b .socketTimeout , TimeUnit .MILLISECONDS )
78
- .writeTimeout (b .socketTimeout , TimeUnit .MILLISECONDS )
79
- .eventListenerFactory (mEventListenerFactory )
63
+ synchronized (QCloudHttpClient .okHttpClientBuilderLock ){
64
+ HttpLoggingInterceptor logInterceptor = new HttpLoggingInterceptor (httpLogger );
65
+ if (BuildConfig .DEBUG ){
66
+ logInterceptor .setLevel (HttpLoggingInterceptor .Level .BODY );
67
+ } else {
68
+ logInterceptor .setLevel (HttpLoggingInterceptor .Level .HEADERS );
69
+ }
70
+ OkHttpClient .Builder builder = b .mBuilder ;
71
+ builder .interceptors ().clear ();
72
+ RedirectInterceptor redirectInterceptor = new RedirectInterceptor ();
73
+ builder .followRedirects (false )
74
+ .followSslRedirects (true )
75
+ .hostnameVerifier (hostnameVerifier )
76
+ .dns (dns )
77
+ .connectTimeout (b .connectionTimeout , TimeUnit .MILLISECONDS )
78
+ .readTimeout (b .socketTimeout , TimeUnit .MILLISECONDS )
79
+ .writeTimeout (b .socketTimeout , TimeUnit .MILLISECONDS )
80
+ .eventListenerFactory (mEventListenerFactory )
80
81
// .addNetworkInterceptor(new HttpMetricsInterceptor())
81
- .addInterceptor (logInterceptor )
82
- .addInterceptor (new RetryInterceptor (b .retryStrategy ))
83
- .addInterceptor (new TrafficControlInterceptor ());
84
- // 设置重定向
85
- if (b .redirectEnable ){
86
- builder .addInterceptor (redirectInterceptor );
87
- }
88
- // 绕过ssl
89
- if (!b .verifySSLEnable ){
90
- try {
91
- builder .hostnameVerifier (new HostnameVerifier () {
92
- @ Override
93
- public boolean verify (String hostname , SSLSession session ) {
94
- return true ;
95
- }
96
- });
97
- // 创建一个TrustManager,绕过证书校验
98
- final TrustManager [] trustAllCerts = new TrustManager []{
99
- new X509TrustManager () {
100
- @ Override
101
- public void checkClientTrusted (java .security .cert .X509Certificate [] chain , String authType ) {
102
- }
103
-
104
- @ Override
105
- public void checkServerTrusted (java .security .cert .X509Certificate [] chain , String authType ) {
106
- }
107
-
108
- @ Override
109
- public java .security .cert .X509Certificate [] getAcceptedIssuers () {
110
- return new java .security .cert .X509Certificate []{};
111
- }
82
+ .addInterceptor (logInterceptor )
83
+ .addInterceptor (new RetryInterceptor (b .retryStrategy ))
84
+ .addInterceptor (new TrafficControlInterceptor ());
85
+ // 设置重定向
86
+ if (b .redirectEnable ){
87
+ builder .addInterceptor (redirectInterceptor );
88
+ }
89
+ // 绕过ssl
90
+ if (!b .verifySSLEnable ){
91
+ try {
92
+ builder .hostnameVerifier (new HostnameVerifier () {
93
+ @ Override
94
+ public boolean verify (String hostname , SSLSession session ) {
95
+ return true ;
112
96
}
113
- };
114
- SSLContext sslContext = SSLContext .getInstance ("TLS" );
115
- sslContext .init (null , trustAllCerts , new java .security .SecureRandom ());
116
- builder .sslSocketFactory (sslContext .getSocketFactory (), (X509TrustManager )trustAllCerts [0 ]);
117
- } catch (Exception e ){
118
- e .printStackTrace ();
97
+ });
98
+ // 创建一个TrustManager,绕过证书校验
99
+ final TrustManager [] trustAllCerts = new TrustManager []{
100
+ new X509TrustManager () {
101
+ @ Override
102
+ public void checkClientTrusted (java .security .cert .X509Certificate [] chain , String authType ) {
103
+ }
104
+
105
+ @ Override
106
+ public void checkServerTrusted (java .security .cert .X509Certificate [] chain , String authType ) {
107
+ }
108
+
109
+ @ Override
110
+ public java .security .cert .X509Certificate [] getAcceptedIssuers () {
111
+ return new java .security .cert .X509Certificate []{};
112
+ }
113
+ }
114
+ };
115
+ SSLContext sslContext = SSLContext .getInstance ("TLS" );
116
+ sslContext .init (null , trustAllCerts , new java .security .SecureRandom ());
117
+ builder .sslSocketFactory (sslContext .getSocketFactory (), (X509TrustManager )trustAllCerts [0 ]);
118
+ } catch (Exception e ){
119
+ e .printStackTrace ();
120
+ }
119
121
}
120
- }
121
122
122
- // 设置客户端证书
123
- if (b .clientCertificateBytes != null ) {
124
- try {
125
- // 加载客户端证书
126
- KeyStore clientKeyStore = KeyStore .getInstance ("BKS" );
127
- if (b .clientCertificateBytes != null ) {
128
- clientKeyStore .load (new ByteArrayInputStream (b .clientCertificateBytes ), b .clientCertificatePassword );
129
- } else {
130
- throw new IllegalStateException ("No client certificate provided" );
131
- }
123
+ // 设置客户端证书
124
+ if (b .clientCertificateBytes != null ) {
125
+ try {
126
+ // 加载客户端证书
127
+ KeyStore clientKeyStore = KeyStore .getInstance ("BKS" );
128
+ if (b .clientCertificateBytes != null ) {
129
+ clientKeyStore .load (new ByteArrayInputStream (b .clientCertificateBytes ), b .clientCertificatePassword );
130
+ } else {
131
+ throw new IllegalStateException ("No client certificate provided" );
132
+ }
132
133
133
- // 创建一个KeyManager,用于提供客户端证书
134
- KeyManagerFactory keyManagerFactory = KeyManagerFactory .getInstance (KeyManagerFactory .getDefaultAlgorithm ());
135
- keyManagerFactory .init (clientKeyStore , b .clientCertificatePassword );
136
- KeyManager [] keyManagers = keyManagerFactory .getKeyManagers ();
137
-
138
- // 创建一个TrustManager,用于信任服务器证书
139
- TrustManagerFactory trustManagerFactory = TrustManagerFactory .getInstance (TrustManagerFactory .getDefaultAlgorithm ());
140
- trustManagerFactory .init ((KeyStore ) null );
141
- TrustManager [] trustManagers = trustManagerFactory .getTrustManagers ();
142
-
143
- // 创建一个SSLContext,并设置KeyManager和TrustManager
144
- SSLContext sslContext = SSLContext .getInstance ("TLS" );
145
- sslContext .init (keyManagers , trustManagers , new SecureRandom ());
146
- builder .sslSocketFactory (sslContext .getSocketFactory (), (X509TrustManager ) trustManagers [0 ]);
147
- } catch (Exception e ) {
148
- e .printStackTrace ();
134
+ // 创建一个KeyManager,用于提供客户端证书
135
+ KeyManagerFactory keyManagerFactory = KeyManagerFactory .getInstance (KeyManagerFactory .getDefaultAlgorithm ());
136
+ keyManagerFactory .init (clientKeyStore , b .clientCertificatePassword );
137
+ KeyManager [] keyManagers = keyManagerFactory .getKeyManagers ();
138
+
139
+ // 创建一个TrustManager,用于信任服务器证书
140
+ TrustManagerFactory trustManagerFactory = TrustManagerFactory .getInstance (TrustManagerFactory .getDefaultAlgorithm ());
141
+ trustManagerFactory .init ((KeyStore ) null );
142
+ TrustManager [] trustManagers = trustManagerFactory .getTrustManagers ();
143
+
144
+ // 创建一个SSLContext,并设置KeyManager和TrustManager
145
+ SSLContext sslContext = SSLContext .getInstance ("TLS" );
146
+ sslContext .init (keyManagers , trustManagers , new SecureRandom ());
147
+ builder .sslSocketFactory (sslContext .getSocketFactory (), (X509TrustManager ) trustManagers [0 ]);
148
+ } catch (Exception e ) {
149
+ e .printStackTrace ();
150
+ }
149
151
}
150
- }
151
152
152
- okHttpClient = builder .build ();
153
- redirectInterceptor .setClient (okHttpClient );
153
+ okHttpClient = builder .build ();
154
+ redirectInterceptor .setClient (okHttpClient );
155
+ }
154
156
}
155
157
156
158
@ Override
0 commit comments