package com.alipay.easysdk.kms.aliyun.credentials.http;
|
|
import com.alipay.easysdk.kms.aliyun.credentials.exceptions.CredentialException;
|
import com.alipay.easysdk.kms.aliyun.credentials.utils.Base64Utils;
|
|
import javax.net.ssl.KeyManager;
|
import javax.net.ssl.X509TrustManager;
|
import java.io.UnsupportedEncodingException;
|
import java.security.MessageDigest;
|
import java.security.NoSuchAlgorithmException;
|
import java.util.Collections;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
public class HttpMessage {
|
protected static final String CONTENT_TYPE = "Content-Type";
|
protected static final String CONTENT_MD5 = "Content-MD5";
|
protected static final String CONTENT_LENGTH = "Content-Length";
|
protected FormatType httpContentType = null;
|
protected byte[] httpContent = null;
|
protected String encoding = null;
|
protected Map<String, String> headers = new HashMap<String, String>();
|
protected Integer connectTimeout = null;
|
protected Integer readTimeout = null;
|
private String url = null;
|
private MethodType method = null;
|
protected boolean ignoreSSLCerts = false;
|
private KeyManager[] keyManagers = null;
|
private X509TrustManager[] x509TrustManagers = null;
|
|
public HttpMessage(String strUrl) {
|
this.url = strUrl;
|
}
|
|
public HttpMessage() {
|
}
|
|
public FormatType getHttpContentType() {
|
return httpContentType;
|
}
|
|
public void setHttpContentType(FormatType httpContentType) {
|
this.httpContentType = httpContentType;
|
}
|
|
public byte[] getHttpContent() {
|
return httpContent;
|
}
|
|
public String getHttpContentString() throws CredentialException {
|
String stringContent = "";
|
if (this.httpContent != null) {
|
try {
|
if (this.encoding == null) {
|
stringContent = new String(this.httpContent);
|
} else {
|
stringContent = new String(this.httpContent, this.encoding);
|
}
|
} catch (UnsupportedEncodingException e) {
|
throw new CredentialException("UnsupportedEncoding: Can not parse response due to unsupported encoding.");
|
}
|
}
|
return stringContent;
|
}
|
|
public void setHttpContent(byte[] httpContent, String encoding, FormatType format) throws NoSuchAlgorithmException {
|
this.httpContent = httpContent;
|
if (null == httpContent) {
|
this.headers.remove(CONTENT_MD5);
|
this.headers.put(CONTENT_LENGTH, "0");
|
this.headers.remove(CONTENT_TYPE);
|
this.httpContentType = null;
|
this.httpContent = null;
|
this.encoding = null;
|
return;
|
}
|
|
// for GET HEADER DELETE OPTION method, sdk should ignore the content
|
if (getMethod() != null && !getMethod().hasContent()) {
|
httpContent = new byte[0];
|
}
|
|
this.httpContent = httpContent;
|
this.encoding = encoding;
|
String contentLen = String.valueOf(httpContent.length);
|
String strMd5 = md5Sum(httpContent);
|
this.headers.put(CONTENT_MD5, strMd5);
|
this.headers.put(CONTENT_LENGTH, contentLen);
|
if (null != format) {
|
this.headers.put(CONTENT_TYPE, FormatType.mapFormatToAccept(format));
|
}
|
}
|
|
public static String md5Sum(byte[] buff) throws NoSuchAlgorithmException {
|
MessageDigest md = MessageDigest.getInstance("MD5");
|
byte[] messageDigest = md.digest(buff);
|
return Base64Utils.encode(messageDigest);
|
|
}
|
|
public String getEncoding() {
|
return encoding;
|
}
|
|
public void setEncoding(String encoding) {
|
this.encoding = encoding;
|
}
|
|
public Map<String, String> getHeaders() {
|
return Collections.unmodifiableMap(headers);
|
}
|
|
public String getHeaderValue(String name) {
|
return this.headers.get(name);
|
}
|
|
public void putHeaderParameter(String name, String value) {
|
if (null != name && null != value) {
|
this.headers.put(name, value);
|
}
|
}
|
|
public void setHeaders(Map<String, String> headers) {
|
this.headers = headers;
|
}
|
|
public Integer getConnectTimeout() {
|
return connectTimeout;
|
}
|
|
public void setConnectTimeout(Integer connectTimeout) {
|
this.connectTimeout = connectTimeout;
|
}
|
|
public Integer getReadTimeout() {
|
return readTimeout;
|
}
|
|
public void setReadTimeout(Integer readTimeout) {
|
this.readTimeout = readTimeout;
|
}
|
|
public String getUrl() {
|
return url;
|
}
|
|
public void setUrl(String url) {
|
this.url = url;
|
}
|
|
public MethodType getMethod() {
|
return method;
|
}
|
|
public void setMethod(MethodType method) {
|
this.method = method;
|
}
|
|
public boolean isIgnoreSSLCerts() {
|
return ignoreSSLCerts;
|
}
|
|
public void setIgnoreSSLCerts(boolean ignoreSSLCerts) {
|
this.ignoreSSLCerts = ignoreSSLCerts;
|
}
|
|
public KeyManager[] getKeyManagers() {
|
return keyManagers;
|
}
|
|
public void setKeyManagers(KeyManager[] keyManagers) {
|
this.keyManagers = keyManagers;
|
}
|
|
public X509TrustManager[] getX509TrustManagers() {
|
return x509TrustManagers;
|
}
|
|
public void setX509TrustManagers(X509TrustManager[] x509TrustManagers) {
|
this.x509TrustManagers = x509TrustManagers;
|
}
|
}
|