Skip to content

Commit 53a098e

Browse files
committed
Merge 'feature/rds_del_host' into 'integration_2026-04-02_1133415429890'
fix(core): URL encode presigned URL query parameter values See merge request: !949
2 parents b87a569 + dd8d70c commit 53a098e

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

volcengine-java-sdk-core/src/main/java/com/volcengine/feature/rds/auth/ConnectUtils.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ public static String buildAuthToken(ApiClient apiClient, String dbUser, String i
7070

7171
RequestInterceptorContext reqCtx = context.getRequestContext();
7272
reqCtx.setPresigned(true);
73-
reqCtx.setSchema(schema);
74-
reqCtx.setHost(endpoint);
7573
reqCtx.setMethod("GET");
7674
reqCtx.setServiceInfo(new ServiceInfo(SERVICE_NAME, "GET"));
7775
reqCtx.setHeaderParams(new HashMap<>());
@@ -82,6 +80,7 @@ public static String buildAuthToken(ApiClient apiClient, String dbUser, String i
8280
queryParams.add(new Pair("X-Expires", String.valueOf(expires)));
8381
queryParams.add(new Pair("DBUser", dbUser));
8482
queryParams.add(new Pair("InstanceId", instanceId));
83+
queryParams.add(new Pair("X-Host", schema + "://" + endpoint));
8584
reqCtx.setQueryParams(queryParams);
8685

8786
// Execute sign interceptor for presigning

volcengine-java-sdk-core/src/main/java/com/volcengine/interceptor/SignRequestInterceptor.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import org.apache.commons.lang.StringUtils;
1515

1616
import java.io.IOException;
17+
import java.io.UnsupportedEncodingException;
18+
import java.net.URLEncoder;
1719
import java.util.*;
1820

1921
public class SignRequestInterceptor implements RequestInterceptor {
@@ -28,7 +30,7 @@ public String name() {
2830
@Override
2931
public InterceptorContext intercept(InterceptorContext context) throws ApiException {
3032
String path = context.getRequestContext().getPath();
31-
String method=context.getRequestContext().getMethod();
33+
String method = context.getRequestContext().getMethod();
3234
Map<String, String> headerParams = context.getRequestContext().getHeaderParams();
3335
List<Pair> queryParams = context.getRequestContext().getQueryParams();
3436
ServiceInfo serviceInfo = context.getRequestContext().getServiceInfo();
@@ -75,8 +77,7 @@ public InterceptorContext intercept(InterceptorContext context) throws ApiExcept
7577
String host = context.getRequestContext().getHost();
7678
try {
7779
Map<String, String> presignedParams = volcengineSign.presign(queryParamsMap, host);
78-
String presignedUrl = buildPresignedUrl(
79-
context.getRequestContext().getSchema(), host, presignedParams);
80+
String presignedUrl = buildPresignedUrl(context.getRequestContext().getSchema(), host, presignedParams);
8081
context.getRequestContext().setPresignedUrl(presignedUrl);
8182
} catch (Exception e) {
8283
throw new ApiException(e);
@@ -125,15 +126,23 @@ public InterceptorContext intercept(InterceptorContext context) throws ApiExcept
125126

126127
private static String buildPresignedUrl(String scheme, String host, Map<String, String> presignedParams) {
127128
StringBuilder url = new StringBuilder();
128-
url.append(scheme).append("://").append(host).append("?");
129+
if (StringUtils.isNotEmpty(scheme) && StringUtils.isNotEmpty(host)) {
130+
url.append(scheme).append("://").append(host).append("?");
131+
}
129132

130133
List<String> keys = new ArrayList<>(presignedParams.keySet());
131134
Collections.sort(keys);
132135

133136
for (int i = 0; i < keys.size(); i++) {
134137
String key = keys.get(i);
135138
String value = presignedParams.get(key);
136-
url.append(key).append("=").append(value);
139+
try {
140+
url.append(key)
141+
.append("=")
142+
.append(URLEncoder.encode(value, "UTF-8").replace("+", "%20"));
143+
} catch (UnsupportedEncodingException e) {
144+
url.append(key).append("=").append(value);
145+
}
137146
if (i < keys.size() - 1) {
138147
url.append("&");
139148
}

0 commit comments

Comments
 (0)