更新时间:2023-11-09 GMT+08:00

OBS客户端通用示例

调用OBSClient类的相关接口时,没有错误产生则说明调用成功;当有错误产生时,则说明操作失败。以下代码展示了使用OBS客户端的通用方式:

NSString *endPoint = @"your-endpoint";
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。
// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/intl/zh-cn/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];

// 初始化身份验证
OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK];

// 初始化服务配置
OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider];

// 初始化client
OBSClient *client = [[OBSClient alloc] initWithConfiguration:conf];


// 创建列举对象请求
OBSListBucketsRequest *request = [OBSListBucketsRequest new];

// 列举对象
OBSBFTask *task = [client listBuckets:request completionHandler:^(OBSListBucketsResponse *response, NSError *error) {
    if(error){
        // 处理错误
       
    }else{
        // 获取结果
        for(OBSBucket *bucket in response.bucketsList){
            NSLog(@"bucketname=%@",bucket.name);
        }
    }
}];
[task waitUntilFinished];
  • 在调用OBSClient类的相关接口时,如果将Client声明为局部变量,则应该通过对请求任务执行waitUntilFinished操作以保证Client在请求任务执行期间始终有效,否则可能造成网络请求失败,程序崩溃的问题。