更新时间: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版本为例,步骤如下:
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)、下载文件等。
以下代码展示如何上传对象至WOS:
wosClient.putObject("bucketname", "objectname", new ByteArrayInputStream("Hello WOS".getBytes()));
以下代码展示如何获取对象的内容:
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();
}
说明:
当完成一系列上传对象操作后,可能需要查看空间中包含哪些对象。以下代码展示如何列举指定空间的对象:
ObjectListing objectListing = wosClient.listObjects("bucketname");
for(WosObject wosObject : objectListing.getObjects()){
System.out.println(" - " + wosObject .getObjectKey() + " " + "(size = " + wosObject .getMetadata().getContentLength() + ")");
}
说明:
以下代码展示如何删除指定的对象:
wosClient.deleteObject("bucketname", "objectname");
使用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)
{
}
}
}