使用OSS C SDK时,需要初始化请求选项(oss_request_options_t),并指定Endpoint。
有关Endpoint的更多信息,请参见访问域名和数据中心和自定义访问域名。
使用OSS域名初始化请求选项
以下代码用于OSS域名初始化请求选项:
#include "oss_api.h" #include "aos_http_io.h" const char *endpoint = "<yourEndpoint>"; const char *access_key_id = "<yourAccessKeyId>"; const char *access_key_secret = "<yourAccessKeySecret>"; void init_options(oss_request_options_t *options) { options->config = oss_config_create(options->pool); /* 用char*类型的字符串初始化aos_string_t类型。*/ aos_str_set(&options->config->endpoint, endpoint); aos_str_set(&options->config->access_key_id, access_key_id); aos_str_set(&options->config->access_key_secret, access_key_secret); /* 是否使用CNAME访问OSS服务。0表示不使用。*/ options->config->is_cname = 0; /* 用于设置网络相关参数,其中这个函数的第二个参数表示ctl的归属,默认为0。*/ options->ctl = aos_http_controller_create(options->pool, 0); } int main() { aos_pool_t *p; oss_request_options_t *options; /* 初始化全局变量。*/ if (aos_http_io_initialize(NULL, 0) != AOSE_OK) { return -1; } /* 初始化内存池和options。*/ aos_pool_create(&p, NULL); options = oss_request_options_create(p); init_options(options); /* 逻辑代码,此处省略。*/ /* 释放内存池,相当于释放了请求过程中各资源分配的内存。*/ aos_pool_destroy(p); /* 释放之前分配的全局资源。*/ aos_http_io_deinitialize(); return 0; }
说明 关于请求选项的设置,请参见
curl_easy_setopt。
使用自定义域名初始化请求选项
以下代码用于自定义域名初始化请求选项:
#include "oss_api.h" #include "aos_http_io.h" const char *endpoint = "<yourCustomEndpoint>"; const char *access_key_id = "<yourAccessKeyId>"; const char *access_key_secret = "<yourAccessKeySecret>"; void init_options(oss_request_options_t *options) { options->config = oss_config_create(options->pool); /* 用char*类型的字符串初始化aos_string_t类型。*/ aos_str_set(&options->config->endpoint, endpoint); aos_str_set(&options->config->access_key_id, access_key_id); aos_str_set(&options->config->access_key_secret, access_key_secret); /* 开启CNAME,将自定义域名绑定到存储空间上。*/ options->config->is_cname = 1; options->ctl = aos_http_controller_create(options->pool, 0); } int main() { aos_pool_t *p; oss_request_options_t *options; /* 初始化全局变量。*/ if (aos_http_io_initialize(NULL, 0) != AOSE_OK) { return -1; } /* 初始化内存池和options。*/ aos_pool_create(&p, NULL); options = oss_request_options_create(p); init_options(options); /* 逻辑代码,此处省略。*/ /* 释放内存池,相当于释放了请求过程中各资源分配的内存。*/ aos_pool_destroy(p); /* 释放之前分配的全局资源。*/ aos_http_io_deinitialize(); return 0; }
使用STS初始化请求选项
以下代码用于STS初始化请求选项:
#include "oss_api.h" #include "aos_http_io.h" const char *endpoint = "<yourEndpoint>"; const char *access_key_id = "<yourAccessKeyId>"; const char *access_key_secret = "<yourAccessKeySecret>"; const char *sts_token = "<yourSecurityToken>"; void init_options(oss_request_options_t *options) { options->config = oss_config_create(options->pool); /* 用char*类型的字符串初始化aos_string_t类型。*/ aos_str_set(&options->config->endpoint, endpoint); aos_str_set(&options->config->access_key_id, access_key_id); aos_str_set(&options->config->access_key_secret, access_key_secret); /* 设置STS。*/ aos_str_set(&options->config->sts_token, sts_token); /* 是否使用CNAME访问OSS服务。0表示不使用。*/ options->config->is_cname = 0; options->ctl = aos_http_controller_create(options->pool, 0); } int main() { aos_pool_t *p; oss_request_options_t *options; /* 初始化全局变量。*/ if (aos_http_io_initialize(NULL, 0) != AOSE_OK) { return -1; } /* 初始化内存池和options。*/ aos_pool_create(&p, NULL); options = oss_request_options_create(p); init_options(options); /* 逻辑代码,此处省略。*/ /* 释放内存池,相当于释放了请求过程中各资源分配的内存。*/ aos_pool_destroy(p); /* 释放之前分配的全局资源。*/ aos_http_io_deinitialize(); return 0; }
设置超时时间
以下代码用于设置超时时间:
#include "oss_api.h" #include "aos_http_io.h" const char *endpoint = "<yourEndpoint>"; const char *access_key_id = "<yourAccessKeyId>"; const char *access_key_secret = "<yourAccessKeySecret>"; void init_options(oss_request_options_t *options) { options->config = oss_config_create(options->pool); /* 用char*类型的字符串初始化aos_string_t类型。*/ aos_str_set(&options->config->endpoint, endpoint); aos_str_set(&options->config->access_key_id, access_key_id); aos_str_set(&options->config->access_key_secret, access_key_secret); /* 是否使用CNAME访问OSS服务。0表示不使用。*/ options->config->is_cname = 0; /* 用于设置网络相关参数,其中这个函数的第二个参数表示ctl的归属,默认为0。*/ options->ctl = aos_http_controller_create(options->pool, 0); /* 设置链接超时,默认为10秒。*/ options->ctl->options->connect_timeout = 10; /* 设置DNS超时,默认为60秒。*/ options->ctl->options->dns_cache_timeout = 60; /* 设置请求超时。 通过speed_limit设置可接受的最小速率,默认为1024,即1 KB/s。 通过speed_time设置可接受的最长时间,默认为15秒。 如果传输速率连续15秒小于1 KB/s,则表明请求超时。 */ options->ctl->options->speed_limit = 1024; options->ctl->options->speed_time = 15; }
设置SSL证书校验
C SDK 3.9.2及以上版本默认开启SSL证书校验。如果出现SSL证书校验失败,您需要设置正确的SSL证书路径,或者关闭SSL证书验证功能。
以下代码用于设置SSL证书校验:
#include "oss_api.h" #include "aos_http_io.h" const char *endpoint = "<yourEndpoint>"; const char *access_key_id = "<yourAccessKeyId>"; const char *access_key_secret = "<yourAccessKeySecret>"; void init_options(oss_request_options_t *options) { options->config = oss_config_create(options->pool); /* 用char*类型的字符串初始化aos_string_t类型。*/ aos_str_set(&options->config->endpoint, endpoint); aos_str_set(&options->config->access_key_id, access_key_id); aos_str_set(&options->config->access_key_secret, access_key_secret); /* 是否使用了CNAME。0表示不使用。*/ options->config->is_cname = 0; /* 用于设置网络相关参数,其中这个函数的第二个参数表示ctl的归属,默认为0。*/ options->ctl = aos_http_controller_create(options->pool, 0); /*设置SSL证书校验。 通过verify_ssl设置是否开启SSL证书校验。可选值为1或0,默认值为1,即开启SSL证书校验。 通过ca_path设置CA证书的根路径,当verify_ssl为1时有效,默认值为空。 通过ca_file设置CA证书的路径,当verify_ssl为1时有效,默认值为空。*/ //开启SSL证书校验,并设置CA证书路径。 //options->ctl->options->verify_ssl = 1; //options->ctl->options->ca_path = "/etc/ssl/certs/"; //options->ctl->options->ca_file = "/etc/ssl/certs/ca-certificates.crt"; //关闭SSL证书校验。 //options->ctl->options->verify_ssl = 0; }