diff --git a/src/main/java/com/qcloud/cos/exception/CosServiceException.java b/src/main/java/com/qcloud/cos/exception/CosServiceException.java index 2ebbba23..682917ba 100644 --- a/src/main/java/com/qcloud/cos/exception/CosServiceException.java +++ b/src/main/java/com/qcloud/cos/exception/CosServiceException.java @@ -18,6 +18,7 @@ package com.qcloud.cos.exception; +import java.util.HashMap; import java.util.Map; /** @@ -102,6 +103,11 @@ public enum ErrorType { */ private Map additionalDetails; + /** + * header information + */ + private Map headers = new HashMap(); + /** * Returns the error XML received in the HTTP Response or null if the exception is constructed * from the headers. @@ -290,5 +296,13 @@ public void setRawResponseContent(String rawResponseContent) { this.rawResponseContent = rawResponseContent; } + public Map getHeaders() { + return headers; + } + + public void setHeaders(Map headers) { + this.headers = headers; + } + } diff --git a/src/main/java/com/qcloud/cos/exception/CosServiceExceptionBuilder.java b/src/main/java/com/qcloud/cos/exception/CosServiceExceptionBuilder.java index cf08981f..97e4797f 100644 --- a/src/main/java/com/qcloud/cos/exception/CosServiceExceptionBuilder.java +++ b/src/main/java/com/qcloud/cos/exception/CosServiceExceptionBuilder.java @@ -56,6 +56,11 @@ public class CosServiceExceptionBuilder { */ private Map additionalDetails; + /** + * header information + */ + private Map headers = new HashMap(); + /** * Returns the error XML received in the HTTP Response or null if the exception is constructed * from the headers. @@ -185,6 +190,7 @@ public CosServiceException build() { cosException.setRequestId(requestId); cosException.setAdditionalDetails(additionalDetails); cosException.setErrorType(errorTypeOf(statusCode)); + cosException.setHeaders(headers); return cosException; } @@ -198,4 +204,13 @@ public CosServiceException build() { private ErrorType errorTypeOf(int statusCode) { return statusCode >= 500 ? ErrorType.Service : ErrorType.Client; } + + public Map getHeaders() { + return headers; + } + + public void setHeaders(Map headers) { + this.headers = headers; + } + } diff --git a/src/main/java/com/qcloud/cos/internal/CosErrorResponseHandler.java b/src/main/java/com/qcloud/cos/internal/CosErrorResponseHandler.java index f62b5241..5b7315bb 100644 --- a/src/main/java/com/qcloud/cos/internal/CosErrorResponseHandler.java +++ b/src/main/java/com/qcloud/cos/internal/CosErrorResponseHandler.java @@ -101,6 +101,7 @@ public CosServiceException handle(CosHttpResponse httpResponse) throws XMLStream */ int targetDepth = 0; final CosServiceExceptionBuilder exceptionBuilder = new CosServiceExceptionBuilder(); + exceptionBuilder.setHeaders(httpResponse.getHeaders()); exceptionBuilder.setErrorResponseXml(content); exceptionBuilder.setStatusCode(httpResponse.getStatusCode());