importorg.apache.commons.codec.binary.Hex;importorg.apache.commons.codec.digest.DigestUtils;importorg.apache.commons.codec.digest.HmacUtils;importorg.apache.http.HttpEntity;importorg.apache.http.HttpResponse;importorg.apache.http.client.HttpClient;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.util.EntityUtils;importjavax.crypto.Mac;importjavax.crypto.spec.SecretKeySpec;import java.io.*;importjava.net.HttpURLConnection;importjava.net.URL;importjava.net.URLEncoder;importjava.security.MessageDigest;importjava.text.SimpleDateFormat;import java.util.*;
public classCosWebApi {private static final String bucket = "test-12xxxxx";private static final String SecretId = "xxxxx";private static final String SecretKey = "xxxx";private static final String host = ".cos.ap-chengdu.myqcloud.com";//根据自己购买的产品替换//资源授权有效期(分钟)
private static final int effectiveMinu = 10;public static final String LINE_SEPARATOR = "\n";public static final String Q_SIGN_ALGORITHM_KEY = "q-sign-algorithm";public static final String Q_SIGN_ALGORITHM_VALUE = "sha1";public static final String Q_AK = "q-ak";public static final String Q_SIGN_TIME = "q-sign-time";public static final String Q_KEY_TIME = "q-key-time";public static final String Q_HEADER_LIST = "q-header-list";public static final String Q_URL_PARAM_LIST = "q-url-param-list";public static final String Q_SIGNATURE = "q-signature";public static final String GET = "get";public static final String PUT = "put";public staticString getGMTDate(){
Calendar cd=Calendar.getInstance();
SimpleDateFormat sdf= new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));returnsdf.format(cd.getTime());
}public static String getAuthorization(Map headers,Mapparams,String httpMethod,
String UriPathname) {
Map signHeaders =buildSignHeaders(headers);
TreeMap sortedSignHeaders = new TreeMap<>();
TreeMap sortedParams = new TreeMap<>();
String qHeaderListStr=buildSignMemberStr(sortedSignHeaders);
String qUrlParamListStr=buildSignMemberStr(sortedParams);
sortedSignHeaders.putAll(signHeaders);
sortedPa