public Request SignRequestWithContentMD5()

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();
    }