DefaultAcsClient::doAction PHP Метод

doAction() публичный Метод

public doAction ( $request, $iSigner = null, $credential = null, $autoRetry = true, $maxRetryNumber = 3 )
    public function doAction($request, $iSigner = null, $credential = null, $autoRetry = true, $maxRetryNumber = 3)
    {
        if (null == $this->iClientProfile && (null == $iSigner || null == $credential || null == $request->getRegionId() || null == $request->getAcceptFormat())) {
            throw new ClientException("No active profile found.", "SDK.InvalidProfile");
        }
        if (null == $iSigner) {
            $iSigner = $this->iClientProfile->getSigner();
        }
        if (null == $credential) {
            $credential = $this->iClientProfile->getCredential();
        }
        $request = $this->prepareRequest($request);
        $domain = EndpointProvider::findProductDomain($request->getRegionId(), $request->getProduct());
        if (null == $domain) {
            throw new ClientException("Can not find endpoint to access.", "SDK.InvalidRegionId");
        }
        $requestUrl = $request->composeUrl($iSigner, $credential, $domain);
        if (count($request->getDomainParameter()) > 0) {
            $httpResponse = HttpHelper::curl($requestUrl, $request->getMethod(), $request->getDomainParameter(), $request->getHeaders());
        } else {
            $httpResponse = HttpHelper::curl($requestUrl, $request->getMethod(), $request->getContent(), $request->getHeaders());
        }
        $retryTimes = 1;
        while (500 <= $httpResponse->getStatus() && $autoRetry && $retryTimes < $maxRetryNumber) {
            $requestUrl = $request->composeUrl($iSigner, $credential, $domain);
            if (count($request->getDomainParameter()) > 0) {
                $httpResponse = HttpHelper::curl($requestUrl, $request->getDomainParameter(), $request->getHeaders());
            } else {
                $httpResponse = HttpHelper::curl($requestUrl, $request->getMethod(), $request->getContent(), $request->getHeaders());
            }
            $retryTimes++;
        }
        return $httpResponse;
    }

Usage Example

Пример #1
0
 public function generate($sessionName)
 {
     $iClientProfile = \DefaultProfile::getProfile("cn-hangzhou", $this->accessKeyId, $this->accessSecret);
     $client = new \DefaultAcsClient($iClientProfile);
     //进一步限制角色的使用权限
     //默认设置为所有权限
     if (!$this->policy) {
         $this->policy = '
             {
               "Statement": [
                 {
                   "Action": [
                     "oss:*"
                   ],
                   "Effect": "Allow",
                   "Resource": "*"
                 }
               ],
               "Version": "1"
             }
         ';
     }
     $request = new \AssumeRoleRequest();
     $request->setFormat($this->format);
     // RoleSessionName即临时身份的会话名称,用于区分不同的临时身份
     // 您可以使用您的客户的ID作为会话名称
     $request->setRoleSessionName($sessionName);
     $request->setRoleArn($this->defaultRoleArn);
     $request->setPolicy($this->policy);
     $request->setDurationSeconds($this->durationSeconds);
     $response = $client->doAction($request);
     return $response->getBody();
 }
All Usage Examples Of DefaultAcsClient::doAction