Skip to content

Commit 074ae42

Browse files
author
jordanqin
committed
update qcloud sdk to 1.5.75
1 parent 7fb3154 commit 074ae42

File tree

6 files changed

+89
-20
lines changed

6 files changed

+89
-20
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 10575
11-
versionName "1.5.74"
10+
versionCode 10576
11+
versionName "1.5.75"
1212

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

QCloudFoundation/foundation/src/main/java/com/tencent/qcloud/core/auth/COSXmlSignSourceProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ public <T> String source(HttpRequest<T> request) throws QCloudClientException {
147147

148148
for (String key : request.headers().keySet()) {
149149
String lowerKey = key.toLowerCase(Locale.ROOT);
150-
if (needToSignHeaders.contains(lowerKey) || lowerKey.startsWith("x-cos-")) {
150+
if (needToSignHeaders.contains(lowerKey) || lowerKey.startsWith("x-cos-") || lowerKey.startsWith("x-ci-")) {
151151
signHeaders.add(key);
152152
}
153153
}
@@ -161,9 +161,9 @@ public <T> String source(HttpRequest<T> request) throws QCloudClientException {
161161

162162

163163
// 默认头部字段参与计算
164-
if (headerKeysRequiredToSign.size() < 1) {
164+
// if (headerKeysRequiredToSign.size() < 1) {
165165
headerKeysRequiredToSign.addAll(signHeaders);
166-
}
166+
// }
167167

168168
// 默认URL参数字段参与计算,需要减去设置的不需要签名的 params
169169
if (parametersRequiredToSign.size() < 1) {

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

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
package com.tencent.qcloud.core.http;
2424

2525

26+
import static com.tencent.qcloud.core.http.HttpConstants.Header.RANGE;
27+
2628
import com.tencent.qcloud.core.auth.QCloudCredentialProvider;
2729
import com.tencent.qcloud.core.auth.QCloudCredentials;
2830
import com.tencent.qcloud.core.auth.QCloudSelfSigner;
@@ -176,6 +178,48 @@ public boolean isSelfSigner(){
176178
return httpRequest.getQCloudSelfSigner() != null;
177179
}
178180

181+
/**
182+
* 增加重试header重签名
183+
*/
184+
public QCloudHttpRequest retrySignRequest() throws QCloudClientException {
185+
httpRequest.removeHeader(HttpConstants.Header.AUTHORIZATION);
186+
httpRequest.addOrReplaceHeader(HttpConstants.Header.COS_SDK_RETRY, String.valueOf(true));
187+
QCloudSigner signer = httpRequest.getQCloudSigner();
188+
if (signer != null) {
189+
metrics.onSignRequestStart();
190+
signRequest(signer, (QCloudHttpRequest) httpRequest);
191+
metrics.onSignRequestEnd();
192+
}
193+
QCloudSelfSigner selfSigner = httpRequest.getQCloudSelfSigner();
194+
if (selfSigner != null) {
195+
metrics.onSignRequestStart();
196+
selfSigner.sign((QCloudHttpRequest) httpRequest);
197+
metrics.onSignRequestEnd();
198+
}
199+
return (QCloudHttpRequest) httpRequest;
200+
}
201+
202+
/**
203+
* 增加重试range header重签名
204+
*/
205+
public QCloudHttpRequest newRangeSignRequest(String newRange) throws QCloudClientException {
206+
httpRequest.removeHeader(HttpConstants.Header.AUTHORIZATION);
207+
httpRequest.addOrReplaceHeader(RANGE, newRange);
208+
QCloudSigner signer = httpRequest.getQCloudSigner();
209+
if (signer != null) {
210+
metrics.onSignRequestStart();
211+
signRequest(signer, (QCloudHttpRequest) httpRequest);
212+
metrics.onSignRequestEnd();
213+
}
214+
QCloudSelfSigner selfSigner = httpRequest.getQCloudSelfSigner();
215+
if (selfSigner != null) {
216+
metrics.onSignRequestStart();
217+
selfSigner.sign((QCloudHttpRequest) httpRequest);
218+
metrics.onSignRequestEnd();
219+
}
220+
return (QCloudHttpRequest) httpRequest;
221+
}
222+
179223
@Override
180224
public void cancel() {
181225
this.networkProxy.cancel();

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

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import com.tencent.qcloud.core.http.HttpTask;
3838
import com.tencent.qcloud.core.http.HttpTaskMetrics;
3939
import com.tencent.qcloud.core.http.NetworkProxy;
40+
import com.tencent.qcloud.core.http.QCloudHttpRequest;
4041
import com.tencent.qcloud.core.http.QCloudHttpRetryHandler;
4142
import com.tencent.qcloud.core.logger.COSLogger;
4243
import com.tencent.qcloud.core.task.RetryStrategy;
@@ -183,9 +184,14 @@ Response processRequest(NetworkProxy networkProxy, Request request, @Nullable Ht
183184
// 属于重试
184185
if(attempts > 0){
185186
// 添加重试header
186-
request = request.newBuilder()
187-
.header(HttpConstants.Header.COS_SDK_RETRY, String.valueOf(true))
188-
.build();
187+
try {
188+
QCloudHttpRequest qCloudHttpRequest = task.retrySignRequest();
189+
request = request.newBuilder()
190+
.header(HttpConstants.Header.COS_SDK_RETRY, String.valueOf(true))
191+
.header(HttpConstants.Header.AUTHORIZATION, qCloudHttpRequest.header(HttpConstants.Header.AUTHORIZATION))
192+
.build();
193+
} catch (Exception ex) {
194+
}
189195
}
190196

191197
COSLogger.iNetwork(HTTP_LOG_TAG, "%s start to execute, attempts is %d", request, attempts);
@@ -294,7 +300,7 @@ private Response executeTaskOnce(NetworkProxy networkProxy, Request request, Htt
294300
if(task.isResponseFilePathConverter()){
295301
long transferBodySize = task.getTransferBodySize();
296302
if(transferBodySize > 0){
297-
request = buildNewRangeRequest(request, transferBodySize);
303+
request = buildNewRangeRequest(request, transferBodySize, task);
298304
}
299305
}
300306
return processSingleRequest(networkProxy, request);
@@ -465,7 +471,7 @@ private boolean isRecoverable(IOException e) {
465471
* @param transferBodySize 已传输的内容长度
466472
* @return 新的Range请求
467473
*/
468-
private Request buildNewRangeRequest(Request request, long transferBodySize){
474+
private Request buildNewRangeRequest(Request request, long transferBodySize, HttpTask task){
469475
long start = -1;
470476
long end = -1;
471477
String range = request.header(RANGE);
@@ -494,7 +500,13 @@ private Request buildNewRangeRequest(Request request, long transferBodySize){
494500
}
495501
Request.Builder requestBuilder = request.newBuilder();
496502
Headers.Builder headerBuilder = request.headers().newBuilder();
497-
headerBuilder.set(RANGE, String.format("bytes=%s-%s", start, (end == -1 ?"": String.valueOf(end))));
503+
String newRange = String.format("bytes=%s-%s", start, (end == -1 ?"": String.valueOf(end)));
504+
try {
505+
QCloudHttpRequest qCloudHttpRequest = task.newRangeSignRequest(newRange);
506+
headerBuilder.set(RANGE, newRange);
507+
headerBuilder.set(HttpConstants.Header.AUTHORIZATION, qCloudHttpRequest.header(HttpConstants.Header.AUTHORIZATION));
508+
} catch (Exception ex) {
509+
}
498510
requestBuilder.headers(headerBuilder.build());
499511
return requestBuilder.build();
500512
}

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

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import com.tencent.qcloud.core.http.HttpConstants;
3737
import com.tencent.qcloud.core.http.HttpTask;
3838
import com.tencent.qcloud.core.http.HttpTaskMetrics;
39+
import com.tencent.qcloud.core.http.QCloudHttpRequest;
3940
import com.tencent.qcloud.core.http.QCloudHttpRetryHandler;
4041
import com.tencent.qcloud.core.logger.COSLogger;
4142
import com.tencent.qcloud.core.task.RetryStrategy;
@@ -183,9 +184,14 @@ Response processRequest(Chain chain, Request request, @Nullable HttpTask task) t
183184
// 属于重试
184185
if(attempts > 0){
185186
// 添加重试header
186-
request = request.newBuilder()
187-
.header(HttpConstants.Header.COS_SDK_RETRY, String.valueOf(true))
188-
.build();
187+
try {
188+
QCloudHttpRequest qCloudHttpRequest = task.retrySignRequest();
189+
request = request.newBuilder()
190+
.header(HttpConstants.Header.COS_SDK_RETRY, String.valueOf(true))
191+
.header(HttpConstants.Header.AUTHORIZATION, qCloudHttpRequest.header(HttpConstants.Header.AUTHORIZATION))
192+
.build();
193+
} catch (Exception ex) {
194+
}
189195
}
190196

191197
COSLogger.iNetwork(HTTP_LOG_TAG, "%s start to execute, attempts is %d", request, attempts);
@@ -294,7 +300,7 @@ private Response executeTaskOnce(Chain chain, Request request, HttpTask task) th
294300
if(task.isResponseFilePathConverter()){
295301
long transferBodySize = task.getTransferBodySize();
296302
if(transferBodySize > 0){
297-
request = buildNewRangeRequest(request, transferBodySize);
303+
request = buildNewRangeRequest(request, transferBodySize, task);
298304
}
299305
}
300306
return processSingleRequest(chain, request);
@@ -465,7 +471,7 @@ private boolean isRecoverable(IOException e) {
465471
* @param transferBodySize 已传输的内容长度
466472
* @return 新的Range请求
467473
*/
468-
private Request buildNewRangeRequest(Request request, long transferBodySize){
474+
private Request buildNewRangeRequest(Request request, long transferBodySize, HttpTask task){
469475
long start = -1;
470476
long end = -1;
471477
String range = request.header(RANGE);
@@ -494,7 +500,13 @@ private Request buildNewRangeRequest(Request request, long transferBodySize){
494500
}
495501
Request.Builder requestBuilder = request.newBuilder();
496502
Headers.Builder headerBuilder = request.headers().newBuilder();
497-
headerBuilder.set(RANGE, String.format("bytes=%s-%s", start, (end == -1 ?"": String.valueOf(end))));
503+
String newRange = String.format("bytes=%s-%s", start, (end == -1 ?"": String.valueOf(end)));
504+
try {
505+
QCloudHttpRequest qCloudHttpRequest = task.newRangeSignRequest(newRange);
506+
headerBuilder.set(RANGE, newRange);
507+
headerBuilder.set(HttpConstants.Header.AUTHORIZATION, qCloudHttpRequest.header(HttpConstants.Header.AUTHORIZATION));
508+
} catch (Exception ex) {
509+
}
498510
requestBuilder.headers(headerBuilder.build());
499511
return requestBuilder.build();
500512
}

QCloudFoundation/quic/src/main/java/com/tencent/qcloud/quic/QuicProxy.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,10 @@ protected HttpResult<T> executeHttpRequest(HttpRequest<T> httpRequest) throws QC
161161

162162
RequestBody requestBody = httpRequest.getRequestBody();
163163
if (httpRequest.getRequestBody() != null) {
164-
String contentType = requestBody.contentType() != null ?
165-
requestBody.contentType().toString() : "application/octet-stream";
166-
quicRequest.addHeader("Content-Type".toLowerCase(Locale.ROOT), contentType);
164+
String contentType = httpRequest.contentType();
165+
if(contentType != null){
166+
quicRequest.addHeader("Content-Type".toLowerCase(Locale.ROOT), contentType);
167+
}
167168
quicRequest.addHeader("Content-Length".toLowerCase(Locale.ROOT), String.valueOf(requestBody.contentLength()));
168169
}
169170

0 commit comments

Comments
 (0)