快速入门

更新时间:2023-08-17 17:36:16

本文档基于WCS Java SDK Rest V2 1.0.0版本编写。

示例代码

WCS Java SDK Rest V2提供丰富的示例代码,方便您参考或直接使用。示例代码包括以下内容:

示例文件 示例内容
DownloadSample 下载文件
SimpleMultipartUploadSample 分片上传
ListObjectsSample 列举文件
ObjectOperationsSample 文件操作
DeleteObjectsSample 批量删除文件
BucketLifecycleSample 空间生命周期
ConcurrentCopyPartSample 分段并发复制大对象
ConcurrentDownloadObjectSample 分段并发下载大对象
ConcurrentUploadPartSample 分段并发上传大对象
CreateFolderSample 创建文件夹
DeleteObjectsSample 批量删除对象
ListBucketsSample 列举空间
ListObjectsV2Sample 列举文件
ObjectMetaSample 设置文件元信息
PostObjectSample 表单上传
RestoreObjectSample 文件解冻

安装

进行各类操作前,您需要先安装Java SDK。

前提条件
使用Java 1.7及以上版本。您可以通过命令java -version查看Java版本。

下载SDK
通过GitHub wcs-java-sdk-v2下载

安装SDK
您可以通过以下方式安装SDK。

在Intellij IDEA项目中导入JAR包

以1.0.0版本为例,步骤如下:

  1. 下载Java SDK开发包
  2. 解压该开发包。
  3. 将解压后文件夹中的文件wcs-java-sdk-rest-v2-1.0.0.jar以及lib文件夹下的所有JAR文件拷贝到您的项目中。
  4. 在Intellij IDEA中选择您的工程,右键选择File->Project Structure->Modules->Dependencies->±>JARs or directories 。
  5. 选中拷贝的所有JAR文件,导入到External Libraries中。

初始化

WosClient是Java客户端,用于管理存储空间和文件等资源。使用Java SDK发起对象操作请求,您需要初始化一个WosClient实例,并根据需要修改WosConfiguration的默认配置项。

// 请从网宿控制台-用户中心-用户信息管理-AccessKey管理处获取aksk
// 请从网宿控制台-对象存储-空间概览处获取endpoint和regionName
String endPoint = "https://your-endpoint";
String regionName = "your regionName";
String ak = "*** Provide your Access Key ***";
String sk = "*** Provide your Secret Key ***";

WosConfiguration config = new WosConfiguration();
config.setSocketTimeout(30000);
config.setConnectionTimeout(10000);
config.setEndPoint(endPoint);
config.setRegionName(regionName);


//创建WosClient实例
WosClient wosClient = new WosClient(ak, sk, config);
        
// 关闭wosClient
wosClient.close();

新建WosClient
新建WosClient时,需要指定Endpoint。您的工程中可以有一个或多个WosClient。WosClient可以并发使用。

配置WosClient
WosConfiguration是WosClient的配置类,您可通过此类来连接超时、最大连接数等参数。可设置的参数如下:

参数 描述 方法
connectionTimeout 建立HTTP/HTTPS连接的超时时间(单位:毫秒)。默认为60000毫秒。 WosConfiguration.setConnectionTimeout
socketTimeout Socket层传输数据的超时时间(单位:毫秒)。默认为60000毫秒。 WosConfiguration.setSocketTimeout
idleConnectionTime 如果空闲时间超过此参数的设定值,则关闭连接(单位:毫秒)。默认为30000毫秒。 WosConfiguration.setIdleConnectionTime
maxIdleConnections 连接池中最大空闲连接数,默认值:1000。 WosConfiguration.setMaxIdleConnections
maxConnections 最大允许的HTTP并发请求数。默认为1000。 WosConfiguration.setMaxConnections
maxErrorRetry 请求失败(请求异常、服务端报500或503错误等)后最大的重试次数。默认3次。 WosConfiguration.setMaxErrorRetry
endPoint 连接WOS的服务地址。可包含协议类型、域名、端口号。示例:https://your-endpoint:443。 WosConfiguration.setEndPoint
readBufferSize 从Socket流下载对象的缓存大小(单位:字节),-1表示不设置缓存。默认为-1。 WosConfiguration.setReadBufferSize
writeBufferSize 上传对象到Socket流时的缓存大小(单位:字节),-1表示不设置缓存。默认为-1。 WosConfiguration.setWriteBufferSize

快速入门

本文介绍如何快速使用WCS Java SDK完成常见操作,如上传文件(Object)、下载文件等。

1.上传对象

以下代码展示如何上传对象至WOS:

wosClient.putObject("bucketname", "objectname", new ByteArrayInputStream("Hello WOS".getBytes()));

2.下载对象

以下代码展示如何获取对象的内容:

WosObject wosObject = wosClient.getObject("bucketname", "objectname");
InputStream content = wosObject.getObjectContent();
if (content != null)
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(content));
    while (true)
    {
        String line = reader.readLine();
        if (line == null)
            break;
        System.out.println("\n" + line);
    }
    reader.close();
}

说明:

  • 调用wosObject.getObject返回一个WosObject实例,该实例包含对象内容及其属性。
  • 调用wosObject.getObjectContent获取对象输入流,可读取此输入流获取其内容,用完之后请关闭这个流。

3.列举对象

当完成一系列上传对象操作后,可能需要查看空间中包含哪些对象。以下代码展示如何列举指定空间的对象:

ObjectListing objectListing = wosClient.listObjects("bucketname");
for(WosObject wosObject : objectListing.getObjects()){
    System.out.println(" - " + wosObject .getObjectKey() + "  " +  "(size = " + wosObject .getMetadata().getContentLength() + ")");
}

说明:

  • 调用WosClient.listObjects返回ObjectListing实例,该实例包含此次listObject请求的返回结果,可通过ObjetListing.getObjects获取所有对象(Object)的描述信息。
  • 上面的代码默认列举1000个对象(Object)。

4.删除对象

以下代码展示如何删除指定的对象:

wosClient.deleteObject("bucketname", "objectname");

5.WOS客户端通用示例

使用WOS客户端进行接口调用操作完成后,没有异常抛出,则表明返回值有效,返回SDK公共响应头实例或其子类实例;若抛出异常,则说明操作失败,此时应从SDK自定义异常实例中获取错误信息。

以下代码展示了使用WOS客户端的通用方式:

// 您的工程中可以只保留一个全局的WosClient实例
// WosClient是线程安全的,可在并发场景下使用
WosClient wosClient = null; 
try
{
    String endPoint = "https://your-endpoint";
    String regionName = "your regionName";
    String ak = "*** Provide your Access Key ***";
    String sk = "*** Provide your Secret Key ***";

    // 创建config
    WosConfiguration config = new WosConfiguration();
    config.setSocketTimeout(30000);
    config.setConnectionTimeout(10000);
    config.setEndPoint(endPoint);
    config.setRegionName(regionName);

    // 创建WosClient实例
    wosClient = new WosClient(ak, sk, config);
    // 调用接口进行操作,例如上传对象
    HeaderResponse response = wosClient.putObject("bucketname", "objectname", new File("localfile"));  // localfile为待上传的本地文件路径,需要指定到具体的文件名
    System.out.println(response);
}
catch (WosException e)
{
    System.out.println("HTTP Code: " + e.getResponseCode());
    System.out.println("Error Code:" + e.getErrorCode());
    System.out.println("Error Message: " + e.getErrorMessage());
    
    System.out.println("Request ID:" + e.getErrorRequestId());
    System.out.println("Host ID:" + e.getErrorHostId());
}finally{
    // 关闭WosClient实例,如果是全局WosClient实例,可以不在每个方法调用完成后关闭
    // WosClient在调用WosClient.close方法关闭后不能再次使用
    if(wosClient != null){
        try
        {
            // wosClient.close();
        }
        catch (IOException e)
        {
        }
    }
}
本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!