in src/main/java/com/alibaba/cloudapi/sdk/util/SignUtil.java [201:229]
private static String buildHeaders(ApiHttpMessage apiHttpMessage) {
//使用TreeMap,默认按照字母排序
Map<String, String> headersToSign = new TreeMap<String, String>();
StringBuilder signHeadersStringBuilder = new StringBuilder();
int flag = 0;
for (Map.Entry<String, List<String>> header : apiHttpMessage.getHeaders().entrySet()) {
if (header.getKey().startsWith(SdkConstant.CLOUDAPI_CA_HEADER_TO_SIGN_PREFIX_SYSTEM)) {
if (flag != 0) {
signHeadersStringBuilder.append(",");
}
flag++;
signHeadersStringBuilder.append(header.getKey());
headersToSign.put(header.getKey(), apiHttpMessage.getFirstHeaderValue(header.getKey()));
}
}
//同时所有加入签名的头的列表,需要用逗号分隔形成一个字符串,加入一个新HTTP头@"X-Ca-Signature-Headers"
apiHttpMessage.addHeader(SdkConstant.CLOUDAPI_X_CA_SIGNATURE_HEADERS, signHeadersStringBuilder.toString());
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> e : headersToSign.entrySet()) {
sb.append(e.getKey()).append(':').append(e.getValue()).append(SdkConstant.CLOUDAPI_LF);
}
return sb.toString();
}