Esempio n. 1
0
 public function performRequest($wsdl, $operation, $params, $options = array('encoding' => 'UTF-8'), $fullReponse = false)
 {
     if (!extension_loaded('soap')) {
         return 'Extension SOAP not found';
     }
     if (!isset($options['soap_version'])) {
         $options['soap_version'] = SOAP_1_1;
     }
     $client = new Zend\Soap\Client($wsdl, $options);
     $soap_params = array();
     foreach ($params as $param_name => $param_value) {
         preg_match('/^(.*)\\:(.*)$/', $param_name, $matches);
         if (count($matches) == 3) {
             if (!isset($soap_params[$matches[1]])) {
                 $soap_params[$matches[1]] = array();
             }
             $soap_params[$matches[1]][$matches[2]] = $param_value;
         } else {
             $soap_params[$param_name] = $param_value;
         }
     }
     try {
         // Set (Session) cookies before the call
         if ($this->allowCookies) {
             if (is_array($this->cookies)) {
                 foreach ($this->cookies as $cookieName => $cookieValue) {
                     $client->setCookie($cookieName, $cookieValue[0]);
                 }
             }
         }
         // Perform the SOAP request
         $result = call_user_func_array(array($client, $operation), $soap_params);
         // Pick up any new cookies from the server
         if ($this->allowCookies) {
             $last_response = $client->getLastResponseHeaders();
             $soapClt = $client->getSoapClient();
             $this->cookies = array_merge($soapClt->_cookies, $this->cookies);
         }
     } catch (SoapFault $e) {
         trigger_error($e->getMessage());
         return $e->getMessage();
     }
     // Unless the full response result is specified, only reply the returned result, and not the "out" parameter results
     if (is_object($result) && !$fullReponse) {
         $result_name = $operation . 'Result';
         if (isset($result->{$result_name})) {
             return $result->{$result_name};
         }
     }
     return $result;
 }
Esempio n. 2
0
 /**
  * Create SOAP client instance and initialize it with provided WSDL URL.
  *
  * @param string $wsdlUrl
  * @param string $token Authentication token
  * @return \Zend\Soap\Client
  */
 public function instantiateSoapClient($wsdlUrl, $token = null)
 {
     $accessCredentials = $token ? $token : \Magento\TestFramework\Authentication\OauthHelper::getApiAccessCredentials()['key'];
     $opts = ['http' => ['header' => "Authorization: Bearer " . $accessCredentials]];
     $context = stream_context_create($opts);
     $soapClient = new \Zend\Soap\Client($wsdlUrl);
     $soapClient->setSoapVersion(SOAP_1_2);
     $soapClient->setStreamContext($context);
     if (TESTS_XDEBUG_ENABLED) {
         $soapClient->setCookie('XDEBUG_SESSION', 1);
     }
     return $soapClient;
 }