アリクラウドOSS APIバージョンは、ツール(SDKを使用しないでください)

 

この記事OSSツールは、簡単なアップロードとダウンロード、取得するためのユーティリティクラスを達成するために、OSS SDKを統合されていません

 アリは公式文書をクラウド住所:https://helpcdn.aliyun.com/document_detail/31947.html

ツールコード

輸入org.apache.commons.codec.binary.Base64。
輸入org.apache.http.HttpEntity。
輸入org.apache.http.HttpResponse。
輸入org.apache.http.client.HttpClient。
輸入org.apache.http.client.methods.HttpGet;
輸入org.apache.http.impl.client.HttpClients。
輸入org.apache.http.util.EntityUtils。
輸入javax.crypto.Mac;
インポートするjavax.crypto.spec.SecretKeySpec;
輸入 java.io. * ;
インポートのjava.net.HttpURLConnection;
インポートのjava.net.URL;
輸入java.text.SimpleDateFormatの。
インポート* java.utilのクラスは。;
 
パブリック クラスがOssWebApiは{ 

    プライベート 静的な 最終文字列ossBucket =「XXX」;
     プライベート 静的な 最終文字列accessKeyId =「XXX」;
     プライベート 静的な 最終文字列secretAccessKeyは=「XXX」; 

   //自社製品のOSSに応じて変更を行うことができますドメイン
プライベート 静的な 最終文字列エンドポイント=「oss-cn-shanghai.aliyuncs.com/」; プライベート 決勝 静的な文字列CHARSET_UTF8 =「UTF8」; プライベート 決勝 静的な文字列アルゴリズム=「HmacSHA1」 // OSS读取 パブリック 静的文字列getOssObj(文字列キー)がスローにIOException { 文字列signResourcePath = "/" + ossBucket + キーを、 文字列のURL = "のhttp://" "" + ossBucket + + エンドポイント。 文字列、日付 = getGMTDate()。 ストリング署名 = (hmacSha1(buildGetSignData(日付、signResourcePath)、secretAccessKey))。 文字列の許可 = "OSS" + accessKeyId + ":" + 署名。 地図 <文字列、文字列>ヘッド= 新しい HashMapの<文字列、文字列> (); 頭。、日付); head.put( "認可" 、認可)。 リターン GET(URL + キー、頭)。 } // OSS上传 パブリック 静的文字列putOssObj(文字列キー、文字列の内容)がスローにIOException { 文字列の日付 = getGMTDate()。 文字列のsignResourcePath = "/" + ossBucket + キー。 文字列connectUrl = "のhttp://" + ossBucket + + "" エンドポイント; ストリング署名 = (hmacSha1(buildPutSignData(日付、signResourcePath)、secretAccessKey))。 文字列の認可= "OSS" + accessKeyId + ":" + 署名。 URL putUrl = 新しい URL(connectUrl + キー)。 HttpURLConnectionの接続; StringBufferのsbuffer = nullを 試す{ // 添加请求内容 接続= (HttpURLConnectionの)putUrl.openConnection(); // 设置HTTP连接属性 connection.setDoOutput(真の); connection.setRequestMethod( "PUT" ); // 设置请求头 connection.setRequestProperty( "日付"、日付)。 connection.setRequestProperty( "認可" 、認可); connection.setReadTimeout( 10000); // 設定読み取りタイムアウト connection.setConnectTimeout(10000); // 設定された接続タイムアウト connection.connect(); OutputStreamをOUT = connection.getOutputStream (); out.write(新しい新しい文字列(コンテンツ).getBytes()); out.flush(); out.close(); // 応答を読み取る IF(connection.getResponseCode()== 200である){ // からサーバーは、入力ストリームを取得します InputStreamReaderのInputStreamの= 新しいInputStreamReaderの(connection.getInputStream()); BufferedReaderのリーダー = 新しいBufferedReaderの(のinputStream)。 文字列のライン。 sbuffer = 新しい StringBufferの( "" ); 一方、((ライン= reader.readLine())!= NULL ){ = 新しい文字列(lines.getBytes()、 "UTF-8" )。 sbuffer.append(株) } reader.close()。 } { // 连接失败 リターン ヌル } // 断开连接 connection.disconnect()。 } キャッチ(IOExceptionを電子){ e.printStackTrace(); } 戻りキー。 } 公共の 静的な文字列(String型のURL、地図<文字列、文字列>ヘッド)が取得スローにIOException { HttpClientをクライアント = HttpClients.createDefault(); HTTPGET HTTPGET = 新しいHTTPGET(URL); (文字列キー:head.keySet()){ httpGet.setHeader(キー、head.get(キー))。 } のHttpResponse応答= client.execute(HTTPGET)。 。response.getEntity()のgetContent(); HttpEntityエンティティ = response.getEntity()。 戻り EntityUtils.toString(エンティティ、 "UTF-8" )。 } パブリック 静的文字列hmacSha1(Stringデータ、文字列キー){ 試みる{ マックMAC = Mac.getInstance( "HmacSHA1を" )。 SecretKeySpec keySpec = 新しいSecretKeySpec(key.getBytes()アルゴリズム)。 mac.init(keySpec)。 バイト[] rawHmac。 rawHmac =mac.doFinal(data.getBytes(CHARSET_UTF8))。 戻る 新しい文字列(Base64.encodeBase64(rawHmac)); } キャッチ(例外e){ スロー 新規のRuntimeException(e)前記 } } パブリック 静的文字列buildGetSignData(文字列日付、文字列CanonicalizedResource){ リターン "GET" + "\ n" + "\ n" + "\ n" +日付+ "\ n" + CanonicalizedResource。 } パブリック 静的文字列buildPutSignData(文字列日付、文字列CanonicalizedResource){ リターン 」+ "PUT" +日付+ "\ n" + CanonicalizedResource。 } パブリック 静的文字列getGMTDate(){ カレンダーCD = Calendar.getInstance(); SimpleDateFormat自衛隊 = 新しいてSimpleDateFormatは、( "EEEは、MMMのYYYYのHHをddは:mm:ssの'GMT'" 、Locale.US)。 sdf.setTimeZone(はTimeZone.getTimeZone( "GMT" )); リターンsdf.format(cd.getTime()); } }

 

例の呼び出し

パブリック クラスのテスト{
     公共 静的 ボイドメイン(文字列[]引数)がスロー例外{ // API请求示例 
        ストリングのgetResult = OssWebApi.getOssObj( "/試験/ 1.TXT" )。
        System.out.println(のgetResult)。

        ストリングputResult = OssWebApi.putOssObj( "/試験/ aaaa.txt"は、 "これはテスト内容です" )。
        System.out.println(putResult)。
    } 
}

 

おすすめ

転載: www.cnblogs.com/vicF/p/11510786.html