Java tutorial
/** * Copyright (c) 2012 The Wiseserc. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ package com.aliyun.android.oss.task; import java.text.ParseException; import java.util.Date; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpHead; import org.apache.http.client.methods.HttpUriRequest; import com.aliyun.android.oss.OSSErrorCode; import com.aliyun.android.oss.OSSException; import com.aliyun.android.oss.http.HttpMethod; import com.aliyun.android.oss.http.OSSHttpTool; import com.aliyun.android.oss.model.OSSObject; import com.aliyun.android.util.Helper; /** * Head Object??Objectmeta?? * * @author Michael */ public class HeadObjectTask extends Task { /** * object?? */ private String objectKey; /** * ? */ private Date modifiedSince; /** * ? */ private Date unModifiedSince; /** * ETag */ private String expectedETag; /** * ?ETag */ private String unexpectedETag; /** * */ public HeadObjectTask(String bucketName, String objectKey) { super(HttpMethod.HEAD, bucketName); this.objectKey = objectKey; } /** * ?? */ @Override protected void checkArguments() { if (Helper.isEmptyString(bucketName) || Helper.isEmptyString(objectKey)) { throw new IllegalArgumentException("bucketName or objectKey not properly set"); } } /** * HttpHead */ protected HttpUriRequest generateHttpRequest() { String requestUri = this.getOSSEndPoint() + httpTool.generateCanonicalizedResource("/" + OSSHttpTool.encodeUri(objectKey)); HttpHead httpHead = new HttpHead(requestUri); String resource = httpTool.generateCanonicalizedResource("/" + bucketName + "/" + objectKey); String dateStr = Helper.getGMTDate(); String authorization = OSSHttpTool.generateAuthorization(accessId, accessKey, httpMethod.toString(), "", "", dateStr, "", resource); httpHead.setHeader(AUTHORIZATION, authorization); httpHead.setHeader(DATE, dateStr); OSSHttpTool.addHttpRequestHeader(httpHead, IF_MODIFIED_SINCE, Helper.getGMTDate(modifiedSince)); OSSHttpTool.addHttpRequestHeader(httpHead, IF_UNMODIFIED_SINCE, Helper.getGMTDate(unModifiedSince)); OSSHttpTool.addHttpRequestHeader(httpHead, IF_MATCH, expectedETag); OSSHttpTool.addHttpRequestHeader(httpHead, IF_NONE_MATCH, unexpectedETag); return httpHead; } public String getBucketName() { return bucketName; } public void setBucketName(String bucketName) { this.bucketName = bucketName; } public String getObjectKey() { return objectKey; } public void setObjectKey(String objectKey) { this.objectKey = objectKey; } /** * ??304 Not Modified * * @param modifiedSince * */ public void setModifiedSince(Date modifiedSince) { this.modifiedSince = modifiedSince; } /** * ???412 Precondition Failed * * @return ? */ public Date getUnModifiedSince() { return unModifiedSince; } /** * ??412 Precondition Failed * * @param unModifiedSince * ? */ public void setUnModifiedSince(Date unModifiedSince) { this.unModifiedSince = unModifiedSince; } /** * ?TagTagobjectETag??412 Precondition Failed * * @return Tag */ public String getExpectedETag() { return expectedETag; } /** * TagTagobjectETag??412 Precondition Failed * * @param expectedETag */ public void setExpectedETag(String expectedETag) { this.expectedETag = expectedETag; } /** * ?TagTagobjectETag???304 Not Modified * * @return Tag */ public String getUnexpectedETag() { return unexpectedETag; } /** * TagTagobjectETag???304 Not Modified * * @return Tag */ public void setUnexpectedETag(String unexpectedETag) { this.unexpectedETag = unexpectedETag; } /** * Object??Metadata???? * * @return Head?Object * @throws OSSException */ public OSSObject getResult() throws OSSException { try { HttpResponse r = this.execute(); OSSObject obj = new OSSObject(this.bucketName, this.objectKey); obj.setObjectMetaData(OSSHttpTool.getObjectMetadataFromResponse(r)); return obj; } catch (OSSException osse) { throw osse; } catch (ParseException pe) { OSSException ossException = new OSSException(pe); ossException.setErrorCode(OSSErrorCode.PARSE_METADATA_ERROR); throw ossException; } finally { this.releaseHttpClient(); } } }