Мыльный клиент __soapCall - тихая ошибка

Я пытаюсь подключиться к Royal Mail Shipping API и не могу понять, почему при $soapClient->__soapCall($method, $params) скрипт перестает выполняться. Ни на экране, ни в логах ошибок нет.

WSDL извлекается из локального файла, а __getFunctions() возвращает доступные методы, поэтому я предполагаю, что это нормально.

Создание объекта soapClient:

    $soapClientOptions = array(
        'cache_wsdl' => 'WSDL_CACHE_NONE',
        'local_cert' => NULL,
        //'ssl_method' => 'SOAP_SSL_METHOD_SSLv3',
        'location' => $this->apiLocation,
        'stream_context' => stream_context_create($this->getAuthenticationHeaders()),
        'soap_version' => SOAP_1_1,
        'trace' => true,
        'exceptions' => true
    );

    try {
        $soapClient = new SoapClient($this->getStaticEndPoint(), $soapClientOptions);
    } catch(\SoapFault $fault){
        $error      =   "SOAP Fault: (faultcode: {$fault->faultcode}\n" ."faultstring: {$fault->faultstring})"; 
        echo $error;
    }catch(\Exception $exception){
        echo "<BR>".$exception;
    }
    $headerObject = new SoapVar($this->getWsseSecurityHeaders(), XSD_ANYXML);
    $header = new SoapHeader($this->moduleRoot.'/reference/oasis-200401-wss-wssecurity-utility-1.0.xsd', 'Security', $headerObject);
    $soapClient->__setSoapHeaders($header);

Ниже приведен код для __soapCall.

    while (true) {
        try {
            $response = $soapClient->__soapCall('createShipment', array());
        } catch (\SoapFault $fault) {
            trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
        } catch (\Exception $e) {
            echo $e->getCode().': '.$e->getMessage();
        }
    }

Объект SoapClient:

object(SoapClient)#1641 (6) {
  ["location"]=>
  string(37) "https://api.royalmail.net/shipping/v2"
  ["trace"]=>
  int(1)
  ["_stream_context"]=>
  resource(4652) of type (stream-context)
  ["_soap_version"]=>
  int(1)
  ["sdl"]=>
  resource(4653) of type (Unknown)
  ["__default_headers"]=>
  array(1) {
    [0]=>
    object(SoapHeader)#1640 (4) {
      ["namespace"]=>
      string(136) "/RoyalMailShipping/reference/oasis-200401-wss-wssecurity-utility-1.0.xsd"
      ["name"]=>
      string(8) "Security"
      ["data"]=>
      object(SoapVar)#1649 (2) {
        ["enc_type"]=>
        int(147)
        ["enc_value"]=>
        string(820) "

                [email protected]
                4d+PCTIxEWdlZA2Zr/OkvOXlTv4=
                MTAzMzg5Njc5NA==
                2016-12-13T10:20:46Z

        "
  }
  ["mustUnderstand"]=>
  bool(false)
}

} }

Я не знаю, как это отладить, так как я не получаю никаких ошибок, я увеличил php memory_limit, но это тоже не помогло. Я использую PHP версии 5.6.27.


person user3233563    schedule 13.12.2016    source источник
comment
Несколько вещей, вы проверили журналы ошибок? У вас есть ошибки, включенные в php? У вас установлен и активен модуль php openssl? Этот последний вызвал у меня нескончаемый ад в прошлом   -  person Jez Emery    schedule 13.12.2016
comment
Я проверил журналы ошибок, и если я передам пустой массив параметров в __soapCall, ошибка будет зарегистрирована в файле: PHP Fatal error: SOAP-ERROR: Encoding: object has no 'integrationHeader' property, который указывает, что загружены wsdl и xsd. Добавление массива параметров обратно в __soapCall просто останавливает выполнение скрипта :( Включены журналирование ошибок и openssl.   -  person user3233563    schedule 13.12.2016
comment
Я знаю, это звучит глупо. Но вы говорили с Королевской почтой? Может ли быть тайм-аут? Кроме того, помимо ограничения памяти php, вы изменили время ожидания с 30 секунд? Проверено, вы действительно можете нормально пинговать / достигать конечной точки?   -  person Jez Emery    schedule 13.12.2016
comment
Королевская почта не видит в своих журналах ничего, что я даже достиг их конца. Обычно я могу добраться до конечной точки, набрав URL-адрес в браузере. Я увеличил таймаут до 60 секунд   -  person user3233563    schedule 15.12.2016