阿里云通信新的SDK总是报错误 无法 getProfile

使用阿里云通信新的SDK,将SDK集成到composer中进行安装的。

类的加载都没有任何的问题,能够正确使用,但是在继续到下面的时候出现了错误:

//初始化访问的acsCleint
   $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
   DefaultProfile::addEndpoint("cn-hangzhou","cn-hangzhou", $product, $domain);

报错信息是:

图片描述

我输出了一下,其中 self::$endpoints 的值是 null。

我的函数的完整代码如下:

public function smsNew($data=[]){
           //此处需要替换成自己的AK信息
           $accessKeyId = Config::get('alidayu.appkey');
           $accessKeySecret = Config::get('alidayu.secretKey');
           //短信API产品名(短信产品名固定,无需修改)
           $product = "Dysmsapi";
           //短信API产品域名(接口地址固定,无需修改)
           $domain = "dysmsapi.aliyuncs.com";
           //暂时不支持多Region(目前仅支持cn-hangzhou请勿修改)
           $region = "cn-hangzhou";
           //初始化访问的acsCleint
           $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
           DefaultProfile::addEndpoint("cn-hangzhou","cn-hangzhou", $product, $domain);
           $acsClient= new DefaultAcsClient($profile);
           $request = new SendSmsRequest();
           $request->setPhoneNumbers($data['mobile']);
           //必填-短信签名
           $request->setSignName(Config::get('alidayu.FreeSignName'));
           //必填-短信模板Code
           $request->setTemplateCode($data['template']);
           //选填-假如模板中存在变量需要替换则为必填(JSON格式)
           $request->setTemplateParam(json_encode($data['param']));
           //选填-发送短信流水号
           // $request->setOutId("1234");
           //发起访问请求
           $acsResponse = $acsClient->getAcsResponse($request);
           dump($acsResponse);
           return $acsResponse;
    }

我的accesskey 和 secretKey 是在 Access Key管理 处生成的,可用。

=============================

刚才测试一下,在demo中是能够发送短信的,在框架中无法使用。

阅读 8.6k
2 个回答

我的加载方式直接就是将sdk放在了vendor中,利用框架的自动加载来完成即可。出现错误的原因和加载方式无关。

阿里云-云通信在帮助手册中给的demo代码是不能直接复制使用的,我就犯了这个问题。

比较帮助手册中给的demo代码和sdk中的demo代码会发现不同的地方在于:

sdk的demo中有一个加载区域节点配置,而帮助手册中的demo是没有的。

use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;

// 加载区域结点配置
Config::load();

因此在我上面出错的代码中,最前面应当手动的加载区域节点配置

 \Aliyun\Core\Config::load();

1.你没有说清楚你是怎么集成的sdk

2.集成这个sdk只需要在composer的autoload里面增加一个Config.php的file加载项就可以了(如果有冲突,自己去改一下就行了)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题