Rewriting Response Headers
When downloading an object, you can rewrite some HTTP/HTTPS response headers. The following table lists rewritable response headers.
Parameter |
Description |
Method in OBS iOS SDK |
---|---|---|
responseContentType |
Rewrites Content-Type in HTTP/HTTPS responses. |
request.responseContentType |
responseContentLanguage |
Rewrites Content-Language in HTTP/HTTPS responses. |
request.responseContentLanguage |
responseExpires |
Rewrites Expires in HTTP/HTTPS responses. |
request.responseExpires |
responseCacheControl |
Rewrites Cache-Control in HTTP/HTTPS responses. |
request.responseCacheControl |
responseContentDisposition |
Rewrites Content-Disposition in HTTP/HTTPS responses. |
request.responseContentDisposition |
responseContentEncoding |
Rewrites Content-Encoding in HTTP/HTTPS responses. |
request.responseContentEncoding |
Sample code:
static OBSClient *client; NSString *endPoint = @"your-endpoint"; // Hard-coded or plaintext AK/SK are risky. For security purposes, encrypt your AK/SK and store them in the configuration file or environment variables. In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, configure environment variables AccessKeyID and SecretAccessKey. // Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/intl/en-us/usermanual-ca/ca_01_0003.html. char* ak_env = getenv("AccessKeyID"); char* sk_env = getenv("SecretAccessKey"); NSString *AK = [NSString stringWithUTF8String:ak_env]; NSString *SK = [NSString stringWithUTF8String:sk_env]; // Initialize identity authentication. OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //Initialize service configuration. OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // Initialize an instance of OBSClient. client = [[OBSClient alloc] initWithConfiguration:conf]; // Streaming download OBSGetObjectToDataRequest *request = [[OBSGetObjectToDataRequest alloc]initWithBucketName:@"bucketname" objectKey:@"objectname"]; //Rewrite ContentType. request.responseContentType = @"image/jpeg"; //Query the download progress. request.downloadProgressBlock = ^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) { NSLog(@"%0.1f%%",(float)(totalBytesWritten)*100/(float)totalBytesExpectedToWrite); }; // Receive downloaded data. __block NSMutableData *objectData = [NSMutableData new]; request.onReceiveDataBlock = ^(NSData *data) { [objectData appendData:data]; }; // Download result [client getObject:request completionHandler:^(OBSGetObjectResponse *response, NSError *error){ NSLog(@"%@",response); }] ;
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot