in java/src/main/java/com/aliyun/oss/Client.java [5955:6071]
public PutObjectResponse putObject(PutObjectRequest request, com.aliyun.ossutil.models.RuntimeOptions runtime) throws Exception {
TeaModel.validateParams(request, "request");
java.util.Map<String, Object> runtime_ = TeaConverter.buildMap(
new TeaPair("timeouted", "retry"),
new TeaPair("readTimeout", com.aliyun.teautil.Common.defaultNumber(runtime.readTimeout, _readTimeout)),
new TeaPair("connectTimeout", com.aliyun.teautil.Common.defaultNumber(runtime.connectTimeout, _connectTimeout)),
new TeaPair("localAddr", com.aliyun.teautil.Common.defaultString(runtime.localAddr, _localAddr)),
new TeaPair("httpProxy", com.aliyun.teautil.Common.defaultString(runtime.httpProxy, _httpProxy)),
new TeaPair("httpsProxy", com.aliyun.teautil.Common.defaultString(runtime.httpsProxy, _httpsProxy)),
new TeaPair("noProxy", com.aliyun.teautil.Common.defaultString(runtime.noProxy, _noProxy)),
new TeaPair("socks5Proxy", com.aliyun.teautil.Common.defaultString(runtime.socks5Proxy, _socks5Proxy)),
new TeaPair("socks5NetWork", com.aliyun.teautil.Common.defaultString(runtime.socks5NetWork, _socks5NetWork)),
new TeaPair("maxIdleConns", com.aliyun.teautil.Common.defaultNumber(runtime.maxIdleConns, _maxIdleConns)),
new TeaPair("retry", TeaConverter.buildMap(
new TeaPair("retryable", runtime.autoretry),
new TeaPair("maxAttempts", com.aliyun.teautil.Common.defaultNumber(runtime.maxAttempts, 3))
)),
new TeaPair("backoff", TeaConverter.buildMap(
new TeaPair("policy", com.aliyun.teautil.Common.defaultString(runtime.backoffPolicy, "no")),
new TeaPair("period", com.aliyun.teautil.Common.defaultNumber(runtime.backoffPeriod, 1))
)),
new TeaPair("ignoreSSL", runtime.ignoreSSL)
);
TeaRequest _lastRequest = null;
long _now = System.currentTimeMillis();
int _retryTimes = 0;
while (Tea.allowRetry((java.util.Map<String, Object>) runtime_.get("retry"), _retryTimes, _now)) {
if (_retryTimes > 0) {
int backoffTime = Tea.getBackoffTime(runtime_.get("backoff"), _retryTimes);
if (backoffTime > 0) {
Tea.sleep(backoffTime);
}
}
_retryTimes = _retryTimes + 1;
try {
TeaRequest request_ = new TeaRequest();
java.util.Map<String, String> ctx = new java.util.HashMap<>();
String accessKeyId = _credential.getAccessKeyId();
String accessKeySecret = _credential.getAccessKeySecret();
String token = _credential.getSecurityToken();
request_.protocol = _protocol;
request_.method = "PUT";
request_.pathname = "/" + request.objectName + "";
request_.headers = TeaConverter.merge(String.class,
TeaConverter.buildMap(
new TeaPair("host", com.aliyun.ossutil.Client.getHost(request.bucketName, _regionId, _endpoint, _hostModel)),
new TeaPair("date", com.aliyun.teautil.Common.getDateUTCString()),
new TeaPair("user-agent", this.getUserAgent())
),
com.aliyun.teautil.Common.stringifyMapValue(TeaModel.buildMap(request.header)),
com.aliyun.ossutil.Client.parseMeta(request.userMeta, "x-oss-meta-")
);
if (!com.aliyun.teautil.Common.empty(token)) {
request_.headers.put("x-oss-security-token", token);
}
request_.body = com.aliyun.ossutil.Client.inject(request.body, ctx);
if (!com.aliyun.teautil.Common.isUnset(TeaModel.buildMap(request.header)) && !com.aliyun.teautil.Common.empty(request.header.contentType)) {
request_.headers.put("content-type", request.header.contentType);
} else {
request_.headers.put("content-type", com.aliyun.ossutil.Client.getContentType(request.objectName));
}
request_.headers.put("authorization", com.aliyun.ossutil.Client.getSignature(request_, request.bucketName, accessKeyId, accessKeySecret, _signatureVersion, _addtionalHeaders));
_lastRequest = request_;
TeaResponse response_ = Tea.doAction(request_, runtime_);
java.util.Map<String, Object> respMap = null;
String bodyStr = null;
if (com.aliyun.teautil.Common.is4xx(response_.statusCode) || com.aliyun.teautil.Common.is5xx(response_.statusCode)) {
bodyStr = com.aliyun.teautil.Common.readAsString(response_.body);
respMap = com.aliyun.ossutil.Client.getErrMessage(bodyStr);
throw new TeaException(TeaConverter.buildMap(
new TeaPair("code", respMap.get("Code")),
new TeaPair("message", respMap.get("Message")),
new TeaPair("data", TeaConverter.buildMap(
new TeaPair("httpCode", response_.statusCode),
new TeaPair("requestId", respMap.get("RequestId")),
new TeaPair("hostId", respMap.get("HostId"))
))
));
}
if (_isEnableCrc && !com.aliyun.teautil.Common.equalString(ctx.get("crc"), response_.headers.get("x-oss-hash-crc64ecma"))) {
throw new TeaException(TeaConverter.buildMap(
new TeaPair("code", "CrcNotMatched"),
new TeaPair("data", TeaConverter.buildMap(
new TeaPair("clientCrc", ctx.get("crc")),
new TeaPair("serverCrc", response_.headers.get("x-oss-hash-crc64ecma"))
))
));
}
if (_isEnableMD5 && !com.aliyun.teautil.Common.equalString(ctx.get("md5"), response_.headers.get("content-md5"))) {
throw new TeaException(TeaConverter.buildMap(
new TeaPair("code", "MD5NotMatched"),
new TeaPair("data", TeaConverter.buildMap(
new TeaPair("clientMD5", ctx.get("md5")),
new TeaPair("serverMD5", response_.headers.get("content-md5"))
))
));
}
return TeaModel.toModel(TeaConverter.merge(String.class,
response_.headers
), new PutObjectResponse());
} catch (Exception e) {
if (Tea.isRetryable(e)) {
continue;
}
throw new RuntimeException(e);
}
}
throw new TeaUnretryableException(_lastRequest);
}