in alibabacloud-gateway-fc/util/java/src/main/java/com/aliyun/gateway/fc/util/Client.java [73:109]
public Request SignRequestWithContentMD5(Request req, String contentMD5) throws Exception {
Request.Builder reqBuilder = req.newBuilder();
Map<String, String> headerParams = new HashMap<>();
String d = getRFC2616Date(null);
reqBuilder.addHeader(HTTPHeaderDate, d);
headerParams.put(HTTPHeaderDate, d);
if (contentMD5 != null && contentMD5.length() != 0) {
reqBuilder.addHeader(HTTPHeaderContentMD5, contentMD5);
}
Map<String, List<String>> mmap = req.headers().toMultimap();
for (String key : mmap.keySet()) {
List<String> v = mmap.get(key);
StringBuilder sb = new StringBuilder();
headerParams.put(key, join(",", v));
}
if (req.body() != null && req.body().contentType() != null) {
headerParams.put(HTTPHeaderContentType, req.body().contentType().toString());
}
String path = req.url().url().getPath();
if (path == null || path.length() == 0) {
path = "/";
}
Map<String, List<String>> params = new HashMap<>();
for (String name : req.url().queryParameterNames()) {
params.put(name, req.url().queryParameterValues(name));
}
String accessKeyId = _credential.getAccessKeyId();
String accessKeySecret = _credential.getAccessKeySecret();
String securityToken = _credential.getSecurityToken();
if (securityToken != null && securityToken.length() != 0) {
reqBuilder.addHeader(HTTPHeaderSecurityToken, securityToken);
headerParams.put(HTTPHeaderSecurityToken, securityToken);
}
String authStr = getAuthString(accessKeyId, accessKeySecret, req.method(), headerParams, path, params);
reqBuilder.addHeader(HTTPHeaderAuthorization, authStr);
return reqBuilder.build();
}