上云无忧 > 文档中心 > 天翼云对象存储(OOS经典版)I型HTTP REST接口使用HttpURLConnection开发
对象存储
天翼云对象存储(OOS经典版)I型HTTP REST接口使用HttpURLConnection开发

文档简介:
package cn.ctyun.oos.sample; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util.Random; import java.util.TimeZone; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64;
*产品来源:中国电信天翼云。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

使用HttpURLConnection开发


package cn.ctyun.oos.sample;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Locale;

import java.util.Random;

import java.util.TimeZone;

import javax.crypto.Mac;

import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

 

public   class HttpUrlConnectionSample {

private static final int CONN_TIMEOUT = 10000;

private static final int READ_TIMEOUT = 30000;

private static final String DATE_STR = "EEE,   d MMM yyyy HH:mm:ss 'GMT'";

private static final SimpleDateFormat DATE_FMT new SimpleDateFormat(DATE_STR, Locale.ENGLISH);

static {

TimeZone gmt = TimeZone.getTimeZone("GMT");

DATE_FMT.setTimeZone(gmt);

}

 

private   final String host;

private   final int port;

private   final String ak;

private   final String sk;

 

public HttpUrlConnectionSample(String   host, int port, String ak, String sk) {

this.host = host;

this.port = port;

this.ak = ak;

this.sk = sk;

}

 

private String authorize(String httpVerb,   String date, String bucket, String objectNamethrows

Exception {

String stringToSign = httpVerb + "\n\n\n"   + date   "\n/"   bucket   "/"   objectName;

Mac mac   = Mac.getInstance("HmacSHA1");

mac.init(new SecretKeySpec(sk.getBytes("UTF-8"), "HmacSHA1"));

byte[] macResult = mac.doFinal(stringToSign.getBytes("UTF-8"));

String signature =   new String(Base64.encodeBase64(macResult), "UTF-8");

String authorization = "AWS   " + ak + ":" + signature;

return authorization;

}

 

public void   put(String bucket, String objName,   byte[] data) throws Exception {

String date = DATE_FMT.format(new   Date());

String authorization = authorize("PUT", date, bucket, objName);

URL url   new   URL("http", host, port, "/"   + bucket   "/"   objName);

HttpURLConnection conn =   (HttpURLConnection) url.openConnection();

conn.setUseCaches(false);

conn.setFixedLengthStreamingMode(data.length);

conn.setRequestProperty("Date", date);

conn.setRequestProperty("Authorization", authorization);

conn.setConnectTimeout(CONN_TIMEOUT);

conn.setReadTimeout(READ_TIMEOUT);

conn.setDoOutput(true);

conn.setRequestMethod("PUT");

conn.connect();

try (OutputStream   out = conn.getOutputStream()) {

out.write(data);

out.flush();

}

int code = conn.getResponseCode();

System.out.println("code="   +   code);

}

 

public void   get(String bucket, String objName) throws Exception {

String   date = DATE_FMT.format(new Date());

String   authorization = authorize("GET", date, bucket, objName);

URL   url = new URL("http", host, port, "/"   +   bucket "/" + objName);

HttpURLConnection   conn = (HttpURLConnection) url.openConnection();

conn.setUseCaches(false);

conn.setRequestProperty("Date", date);

conn.setRequestProperty("Authorization", authorization);

conn.setConnectTimeout(CONN_TIMEOUT);

conn.setReadTimeout(READ_TIMEOUT);

conn.setDoInput(true);

conn.setRequestMethod("GET");

conn.connect();

int code = conn.getResponseCode();

System.out.println("code="   +   code);

try (InputStream in = conn.getInputStream())   {

byte[] buffer = new byte[1024 * 8];

while (in.read(buffer) != -1) {

}

}

}

 

public void   delete(String bucket, String objName)   throws Exception {

String date = DATE_FMT.format(new   Date());

String authorization = authorize("DELETE", date, bucket, objName);

URL url   new   URL("http", host, port, "/"   + bucket   "/"   objName);

HttpURLConnection conn =   (HttpURLConnection) url.openConnection();

conn.setRequestProperty("Date", date);

conn.setRequestProperty("Authorization", authorization);

conn.setConnectTimeout(CONN_TIMEOUT);

conn.setReadTimeout(READ_TIMEOUT);

conn.setRequestMethod("DELETE");

conn.connect();

int code = conn.getResponseCode();

System.out.println("code="   code);

}

 

public   static void main(String[]   args)   throws Exception {

String host = "oos-nm2.ctyunapi.cn";

int port = 80;

String ak = "your_ak";

String sk = "your_sk";

String bucket =   "bucket_name";

String objName =   "object_name";

byte[] data = new byte[1024 * 1024 * 10];

Random rand = new Random();

rand.nextBytes(data);

HttpUrlConnectionSample   s = new HttpUrlConnectionSample(host, port, ak, sk);

s.put(bucket, objName, data);

s.get(bucket, objName);

s.delete(bucketobjName);

}

}

相似文档
  • OOS对象存储网络中的各个地区,使用统一的Endpoint。用户也可以指定使用某个资源池的Endpoint,这样可以直接定位到该资源池。
  • 统计API请求结构 l 接入地址 接入地址为:oos-cn-mg.ctyunapi.cn。 l 通信协议 为了保证通信的安全性,统计支持HTTP和HTTPS。 l 请求方法 统计支持GET请求方法发送请求。 l 请求参数 每个请求都需要指定如下信息: Ø 每个操作接口都需要包含的公共请求参数。 Ø 操作接口所特有的请求参数。 本节主要描述公共请求参数和请求结果。 说明:在后续提到具体API时,举例中都会有公共请求头、公共响应头,但是不对其进行描述和解释。
  • API 描述 GetCapacity 此操作用来查询用户的容量。 GetDeleteCapacity 此操作用来查询用户删除的容量。 GetTraffics 此操作用来查询用户的流量。 GetRequests 此操作用来查询用户请求次数。 GetReturnCode 此操作用来查询用户请求返回码次数。 GetConcurrentConnection 此操作用来查询用户的并发连接数。 GetUsage 此操作用来查询用户Bucket的使用情况。 GetBandwidth 此操作用来查询用户的已用带宽。
  • 此操作用来查询用户的容量。 请求参数 名称 描述 是否必填 Action GetCapacity。 是 BeginDate 指定查询容量的起始时间,统计数据的起始时间为开始日期(时区为:UTC+8)的00:00。 类型:Time。 取值:格式为yyyy-MM-dd。 是
  • 此操作用来查询收费容量。用户可以根据需求,查询指定存储桶、指定数据位置、指定存储类型的容量。 l 请求参数 名称 描述 是否必填 Action GetBilledStorageUsage。 是 BeginDate 指定查询容量的起始时间,统计数据的起始时间为开始日期(时区为:UTC+8)的00:00。 类型:Time。 取值:格式为yyyy-MM-dd。 是
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部