代码如下:
/**
* 采用 自定义响应体授权
*
* 这是我们自己网络请求的回调,在成功后界面返回的数据,然后给到
*
* secretId = keySecretBean.getData().getCredentials().getTmpSecretId();
* signKey = keySecretBean.getData().getCredentials().getTmpSecretKey();
* beginTime = System.currentTimeMillis() / 1000;
* expiredTime = keySecretBean.getData().getExpiredTime();
*
*
*/
class MyRequestCallBack implements RequestCallBack {
@Override
public void onRequestSuccess(String result) {
Log.e("HttpManager", "结果数据===" + result);
Gson gson = new Gson();
KeySecretBean keySecretBean = gson.fromJson(result, KeySecretBean.class);
secretId = keySecretBean.getData().getCredentials().getTmpSecretId();
signKey = keySecretBean.getData().getCredentials().getTmpSecretKey();
beginTime = System.currentTimeMillis() / 1000;
expiredTime = keySecretBean.getData().getExpiredTime();
MyCredentialProvider credentialProvider = new MyCredentialProvider();
CosXmlServiceConfig cosXmlServiceConfig = new CosXmlServiceConfig.Builder()
.setAppidAndRegion(appid, region)
.setDebuggable(true)
.builder();
cosXmlService = new CosXmlService(MainActivity.this, cosXmlServiceConfig, credentialProvider);
TransferConfig transferConfig = new TransferConfig.Builder().setDividsionForCopy(5 * 1024 * 1024) // 是否启用分片复制的文件最小大小
.setSliceSizeForCopy(5 * 1024 * 1024) //分片复制时的分片大小
.setDivisionForUpload(2 * 1024 * 1024) // 是否启用分片上传的文件最小大小
.setSliceSizeForCopy(1024 * 1024) //分片上传时的分片大小
.build();
transferManager = new TransferManager(cosXmlService, transferConfig);
try {
credentialProvider.fetchNewCredentials();
} catch (QCloudClientException e) {
e.printStackTrace();
}
}
@Override
public void onRequestFailed(String errorMsg) {
Log.e("HttpManager", "失败数据===" + errorMsg);
}
}
public void onInitClick(View view) {
request();
}
/**
* 获取临时的密钥
*/
private void request() {
RequestManager requestManager = new RequestManagerI(MainActivity.this, API_URL);
HashMap<String, String> parames = new HashMap<>();
parames.put("client", "");
parames.put("uid", "1");
try {
requestManager.postRequestByAsyn("api/bucket/keysecret", parames, new MyRequestCallBack());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 点击上传的按钮
* @param view
*/
public void onUploadClick(View view) {
//String bucket = "";
String cosPath = "/work/1/KeySecretTest.txt";
String localPath = Environment.getExternalStorageDirectory() + "/KeySecretTest.txt";
Log.v("QCloudHttp", "localPath == " + localPath);
upload(bucket+appid, cosPath, localPath);
}
/**
* 上传
*
* @params bucket bucket 名称
* @params cosPath 上传到 COS 的路径
* @params localPath 本地文件路径
*/
public void upload(String bucket, String cosPath, String localPath) {
// 开始上传,并返回生成的 COSXMLUploadTask
Log.v("QCloudHttp", "执行上传 == " + localPath);
COSXMLUploadTask cosxmlUploadTask = transferManager.upload(bucket, cosPath, localPath, null);
// 设置上传状态监听
cosxmlUploadTask.setTransferStateListener(new TransferStateListener() {
@Override
public void onStateChanged(final TransferState state) {
Log.e("HttpManager", "TransferState === " + state.toString());
}
});
// 设置上传进度监听
cosxmlUploadTask.setCosXmlProgressListener(new CosXmlProgressListener() {
@Override
public void onProgress(final long complete, final long target) {
}
});
// 设置结果监听
cosxmlUploadTask.setCosXmlResultListener(new CosXmlResultListener() {
@Override
public void onSuccess(CosXmlRequest request, CosXmlResult result) {
Log.e("HttpManager", "CosXmlResult === " + result.httpCode);
}
@Override
public void onFail(CosXmlRequest request, CosXmlClientException exception, CosXmlServiceException serviceException) {
Log.e("HttpManager", "CosXmlClientException === " + exception.getMessage());
Log.e("HttpManager", "CosXmlServiceException === " + serviceException.getMessage());
}
});
}
private void requestPermissions() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
}
}
// 然后解析响应,获取密钥信息
class MyCredentialProvider extends BasicLifecycleCredentialProvider {
@Override
protected QCloudLifecycleCredentials fetchNewCredentials() throws QCloudClientException{
return new BasicQCloudCredentials(secretId, signKey, beginTime, expiredTime);
}
}
相似问题