閱讀197 返回首頁    go 新東方


使用已經搭建好的應用服務器__安卓應用示例_最佳實踐_對象存儲 OSS-阿裏雲

本文主要講解OssDemo這樣的移動APP如何使用應用服務器,以達到不需要在APP端存儲AccessKeyId和AccessKeySecret也能向OSS上傳的目的。

調用邏輯

  1. OssDemo在獲取sts_server的地址後,發送請求。
  2. sts_server返回AccessKeyId、AccessKeySecret、SecurityToken、Expiration。
  3. OssDemo獲取這些信息後,調用SDK,構建OssClient。

具體代碼

  1. 生成一個EditText控件。

    1. 位置:
    2. res/layout/content_main.xml
    3. 內容:
    4. <EditText
    5. android:layout_height="wrap_content"
    6. android:layout_width="0dp"
    7. android:layout_weight="4"
    8. android:id="@+id/sts_server"
    9. android:text="@string/sts_server"
    10. />
    11. 位置:
    12. res/values/strings
    13. 內容:
    14. <string name="sts_server">https://oss-demo.aliyuncs.com/app-server/sts.php</string>
  2. 從應用服務器獲取STS相關參數的代碼。
    函數實現:

    1. OSSFederationToken getFederationToken()
  3. 調用STS返回參數,初始化OssClient代碼。
    函數實現:

    1. //初始化一個OssService用來上傳下載
    2. public OssService initOSS(String endpoint, String bucket, ImageDisplayer displayer) {
    3. //如果希望直接使用accessKey來訪問的時候,可以直接使用OSSPlainTextAKSKCredentialProvider來鑒權。
    4. //OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKeyId, accessKeySecret);
    5. //使用自己的獲取STSToken的類
    6. OSSCredentialProvider credentialProvider = new STSGetter(stsServer);
    7. ClientConfiguration conf = new ClientConfiguration();
    8. conf.setConnectionTimeout(15 * 1000); // 連接超時,默認15秒
    9. conf.setSocketTimeout(15 * 1000); // socket超時,默認15秒
    10. conf.setMaxConcurrentRequest(5); // 最大並發請求書,默認5個
    11. conf.setMaxErrorRetry(2); // 失敗後最大重試次數,默認2次
    12. OSS oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider, conf);
    13. return new OssService(oss, bucket, displayer);
    14. }

最後更新:2016-11-23 16:04:09

  上一篇:go OssDemo簡介__安卓應用示例_最佳實踐_對象存儲 OSS-阿裏雲
  下一篇:go 圖片處理__安卓應用示例_最佳實踐_對象存儲 OSS-阿裏雲