Skip to content

Commit 7ea33d5

Browse files
author
jordanqin
committed
update qcloud sdk to 1.5.73
1 parent b9cf95b commit 7ea33d5

File tree

4 files changed

+97
-92
lines changed

4 files changed

+97
-92
lines changed

QCloudFoundation/foundation/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
minSdkVersion 15
88
targetSdkVersion 28
99

10-
versionCode 10573
11-
versionName "1.5.72"
10+
versionCode 10574
11+
versionName "1.5.73"
1212

1313
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
1414

QCloudFoundation/foundation/src/main/java/com/tencent/qcloud/core/http/OkHttpClientImpl.java

Lines changed: 86 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -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

QCloudFoundation/foundation/src/main/java/com/tencent/qcloud/core/http/QCloudHttpClient.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public final class QCloudHttpClient {
6060
private String networkClientType = OkHttpClientImpl.class.getName();
6161
private static Map<Integer, NetworkClient> networkClientMap = new ConcurrentHashMap<>(2);
6262
private static OkHttpClient.Builder okHttpClientBuilder;
63+
public static final Object okHttpClientBuilderLock = new Object();
6364
private OkHttpClientImpl okhttpNetworkClient;
6465
private final TaskManager taskManager;
6566
private final HttpLogger httpLogger;
@@ -439,14 +440,15 @@ public QCloudHttpClient build() {
439440
if(qCloudHttpRetryHandler != null){
440441
retryStrategy.setRetryHandler(qCloudHttpRetryHandler);
441442
}
442-
if (mBuilder == null) {
443-
// 复用okhttp底层资源(线程池、连接池等)
444-
if(QCloudHttpClient.okHttpClientBuilder == null){
445-
QCloudHttpClient.okHttpClientBuilder = new OkHttpClient.Builder();
443+
synchronized (okHttpClientBuilderLock){
444+
if (mBuilder == null) {
445+
// 复用okhttp底层资源(线程池、连接池等)
446+
if(QCloudHttpClient.okHttpClientBuilder == null){
447+
QCloudHttpClient.okHttpClientBuilder = new OkHttpClient.Builder();
448+
}
449+
mBuilder = QCloudHttpClient.okHttpClientBuilder;
446450
}
447-
mBuilder = QCloudHttpClient.okHttpClientBuilder;
448451
}
449-
450452
return new QCloudHttpClient(this);
451453
}
452454
}

QCloudFoundation/foundation/src/main/java/com/tencent/qcloud/core/http/interceptor/TrafficControlInterceptor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ private abstract static class TrafficStrategy {
7777
this.maxConcurrent = maxConcurrent;
7878
controller = new ResizableSemaphore(concurrent, true);
7979
this.concurrent = new AtomicInteger(concurrent);
80+
this.boostModeExhaustedTime = System.nanoTime() + BOOST_MODE_DURATION;
8081
QCloudLogger.d(HTTP_LOG_TAG, name + " init concurrent is " + concurrent);
8182
}
8283

0 commit comments

Comments
 (0)