@@ -60,97 +60,99 @@ public okhttp3.EventListener create(Call call) {
6060 public void init (QCloudHttpClient .Builder b , HostnameVerifier hostnameVerifier ,
6161 final Dns dns , HttpLogger httpLogger ) {
6262 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 )
8081// .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 ;
11296 }
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+ }
119121 }
120- }
121122
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+ }
132133
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+ }
149151 }
150- }
151152
152- okHttpClient = builder .build ();
153- redirectInterceptor .setClient (okHttpClient );
153+ okHttpClient = builder .build ();
154+ redirectInterceptor .setClient (okHttpClient );
155+ }
154156 }
155157
156158 @ Override
0 commit comments