BosClient

新建BosClient

BosClient是BOS服务的客户端,为开发者与BOS服务进行交互提供了一系列的方法。在使用SDK发起对BOS的请求前,您需要初始化一个BosClient实例,并对它进行一些必要设置。

  • 基本流程

    1. 确定EndPoint。EndPoint是指BOS服务在各个区域的域名地址,例如北京域名为bj.bcebos.com。
    2. 创建一个BosClientConfiguration实例。
    3. 使用setCredentials向BosClientConfiguration中传入您的AK/SK。
    4. 将配置好的BosClientConfiguration传入BosClient。
  • 示例代码

    用户可以参考如下代码新建一个BosClient:

    BosClientConfiguration config = new BosClientConfiguration();
    config.setCredentials(new DefaultBceCredentials(<AccessKeyID>, <SecretAccessKey>));   //您的AK/SK
    config.setEndpoint(<EndPoint>);    //传入Bucket所在区域域名
    BosClient client = new BosClient(config);
    

    注意:EndPoint参数只能用指定的包含区域的域名来进行定义。百度智能云目前开放了多区域支持,请参考区域选择说明

    目前支持“华北-北京”、“华南-广州”和“华东-苏州”三个区域。北京区域:http://bj.bcebos.com,广州区域:http://gz.bcebos.com,苏州区域:http://su.bcebos.com

    使用AK/SK直接登录意味着您的账户信息可能存在被泄露到第三方的危险,出于安全考虑,我们不建议您使用这种方式访问BOS。如果您必须要用这种方式,请务必注意保护您的账户资产安全。

新建带有STS验证的BosClient

Android SDK主要用于移动端开发的场景,而对于移动端的鉴权,如您直接将您的AK/SK泄露给移动端,势必会给您的账户带来安全隐患,因此推荐您使用STS 方式实现移动端的鉴权。STS的详细介绍请参考临时授权访问

使用STS方式需要您在调用API时首先创建带有STS的BosClient来执行,目前BOS的STS只支持如下方法的API调用:

  • DeleteObject
  • PutObject
  • ListParts
  • GetObject
  • DoesBucketExist
  • CompleteMultipartUpload
  • AbortMultipartUpload
  • InitiateMultipartUpload
  • UploadPart

示例代码:

​```  
BosClientConfiguration config = new BosClientConfiguration();    // 初始化一个带有STS验证的BosClient
config.setCredentials(new DefaultBceSessionCredentials(<AccessKeyID>, <SecretAccessKey>, <Token>);    //STS返回的临时AK/SK及Token
BosClient client = new BosClient(config);
​```

>**说明:**下述代码示例中,均使用原始AK/SK创建BosClient举例,如您需要使用带有STS验证的BosClient,可以在创建BosClient时,按照上述方法执行。

配置HTTPS协议访问BOS

BOS支持HTTPS传输协议,您可以通过如下两种方式在BOS Android SDK中使用HTTPS访问BOS服务:

  • 在endpoint中指明https:

    String endpoint = "https://bj.bcebos.com";
    String ak = "ak";
    String sk = "sk";
    BosClientConfiguration config = new BosClientConfigration();
    config.setEndpoint(endpoint);  
    config.setCredentials(new DefaultBceCredentials(ak, sk));
    BosClient client = new BosClient(config);
    
  • 通过调用setProtocol方法设置https协议:

    String endpoint = "bj.bcebos.com"; // endpoint中不包含protocol
    String ak = "ak";
    String sk = "sk";
    BosClientConfiguration config = new BosClientConfigration();
    config.setEndpoint(endpoint);  
    config.setCredentials(new DefaultBceCredentials(ak, sk));
    config.setProtocol(Protocol.HTTPS); // 如果不指明, 则使用http
    BosClient client = new BosClient(config);
    

    注意:如果在endpoint中指明了protocol, 则endpoint中的生效, 另外单独再调用setProtocol()不起作用。

    String endpoint = "http://bj.bcebos.com";
    String ak = "ak";
    String sk = "sk";
    BosClientConfiguration config = new BosClientConfigration();
    config.setEndpoint(endpoint); 
    config.setCredentials(new DefaultBceCredentials(ak, sk));
    config.setProtocol(Protocol.HTTPS); // endpoint中已经指明, 此为无效操作, 对http也是如此
    BosClient client = new BosClient(config);
    

配置BosClient

如果您需要配置BosClient的一些细节的参数,可以在构造BosClient的时候传入BosClientConfiguration对象。 BosClientConfiguration是BOS服务的配置类,可以通过BosClientConfiguration对基本网络参数进行设置。

设置网络参数

您可以使用BosClientConfiguration对基本网络参数进行设置。

  • 示例代码

    BosClientConfiguration config = new BosClientConfiguration();
    
    // 设置HTTP最大连接数为10
    config.setMaxConnections(10);
    
    // 设置TCP连接超时为5000毫秒
    config.setConnectionTimeout(5000);
    
    // 设置Socket传输数据超时的时间为2000毫秒
    config.setSocketTimeout(2000);
    
  • 参数说明

    通过BosClientConfiguration能指定的所有参数如下表所示:

    参数 说明
    UserAgent 用户代理,指HTTP的User-Agent头
    Protocol 连接协议类型,缺省值HTTP协议
    LocalAddress 本地地址
    ConnectionTimeoutInMillis 建立连接的超时时间(单位:毫秒),缺省值为30000
    SocketTimeoutInMillis 通过打开的连接传输数据的超时时间(单位:毫秒),缺省值为30000
    MaxConnections 允许打开的最大HTTP连接数,缺省值为5
    RetryPolicy 连接重试策略
    SocketBufferSizeInBytes Socket缓冲区大小
    StreamBufferSize 流文件缓冲区大小