问题描述
.在安卓本地测试使用OSSPlainTextAKSKCredentialProvider 创建凭证访问oss,进行(asyncListBuckets)获异步取空间列表操作。 然后就ClientException报错Service haven't been set!
测试用c++的sdk访问一切正常。。不清楚为什么安卓的报错。测试都无法通过。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您描述的问题,您在安卓端使用OSSPlainTextAKSKCredentialProvider创建凭证以异步方式列出OSS存储空间时遇到Service haven't been set!
的ClientException错误。尽管C语言SDK访问正常,但安卓端测试出现问题。结合您的情况和参考资料,我们可以进行如下分析与解决尝试:
检查凭证提供器配置:
OSSPlainTextAKSKCredentialProvider
实例化时传入的AccessKey ID和AccessKey Secret是否正确无误。OSSClient
实例。验证客户端配置:
ClientConfiguration
对象是否正确配置了网络参数,如超时时间、SSL/TLS设置等。AndroidManifest.xml
中添加如下权限声明(如果尚未添加):
<uses-permission android:name="android.permission.INTERNET" />
审查依赖管理:
build.gradle
文件,确认使用的阿里云OSS SDK版本是最新的或与您的需求兼容的版本。日志调试:
环境差异排查:
请确保您的代码类似于以下示例,注意凭证提供器及客户端的正确初始化:
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 初始化凭证提供器
OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKeyId, accessKeySecret);
// 配置客户端
ClientConfiguration config = new ClientConfiguration();
config.setConnectionTimeout(15 * 1000); // 连接超时时间
config.setSocketTimeout(15 * 1000); // Socket超时时间
// 创建OSSClient实例
OSS ossClient = new OSSClient(getApplicationContext(), "<yourEndpoint>", credentialProvider, config);
// 异步列举Bucket
ListBucketsRequest request = new ListBucketsRequest();
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
@Override
public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
// 处理成功逻辑
}
@Override
public void onFailure(ListBucketsRequest request, ClientException clientExcepion, ServiceException serviceException) {
// 处理失败逻辑
if (clientExcepion != null) {
clientExcepion.printStackTrace();
}
if (serviceException != null) {
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
如果以上步骤未能解决问题,请收集完整的错误日志,并考虑联系阿里云技术支持,提供详细的应用环境信息、错误日志以及已尝试的解决措施,以便获得更专业的协助。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。