PHP мыльный клиент останавливает скрипт - PullRequest
0 голосов
/ 04 декабря 2018

Следующая проблема сводит меня с ума:

Я подключен к SOAP WS с сертификатом WSDL и p12.Я могу вызвать что-то и получить исключение, если метод не правильный, или если отсутствует параметр:

"Function ("Test1") is not a valid method for this service"
"SOAP-ERROR: Encoding: object has no 'message' property"

Но если все (я думаю) правильно, сценарий останавливается

<code>try{
$client = new SoapClient(
        $soapUrl,
        array(
                'ssl' => array(
                        'cert' => $cert_file,
                        'certpasswd' => $cert_password),
                        'trace' => 1,
                        'exceptions' => 0
                        )
                )
);

$uuid = gen_uuid();

$SendValue = array('transaction' => Array('uuid'=>$uuid),
                   'message' => '-test message-',
                   'delay' => 0,
                   throwException => 1,
                   forceRollback => 0);
echo "<br>";                 

//           var_dump($SendValue);
        echo "Test Start - ";    // this is printed 
        $result = $client -> Test($SendValue);
            echo " - Test Ende";  // this is not printed anymore and all the below
                echo "<br>OK - Request:\n" . $client->__getLastRequest(). "!\n";


        echo "<pre>";
        print_r($result);
        echo "
"; // ----------------------------------------------------------- echo "

EOF

";} catch (\ Exception $ exception) {echo "Не работает ..."; var_dump ($ exception); echo"Запрос: \ n". $ Client -> __ getLastRequest (). "\ N"; echo "Ответ: \ n". $ Client -> __ getLastResponse (). "\ N";} echo "это не печатается";

Любые предложения, пожалуйста? Большое спасибо в Advance.

1 Ответ

0 голосов
/ 04 декабря 2018

Похоже, вы поместили параметр trace в неправильном месте в массиве конфигурации.Вместо

    array(
            'ssl' => array(
                    'cert' => $cert_file,
                    'certpasswd' => $cert_password,
                    'trace' => 1,
                    'exceptions' => 0
                    )
            )

это должно быть

    array(
            'ssl' => array(
                    'cert' => $cert_file,
                    'certpasswd' => $cert_password,
                    ) 
            'trace' => 1,
            'exceptions' => 0
            )

Фактически не установленный параметр trace (когда он находится в неправильном месте, используется запасной вариант по умолчанию 0) вызывает __getLastRequest() быть недоступным`, поэтому вы, вероятно, получаете «вызов неопределенной ошибки метода».

Наиболее вероятная причина, по которой вы этого не видите, это ваша конфигурация php во время выполнения, которая не позволяет вам видеть сообщения об ошибках.Обратитесь к белому экрану смерти PHP , чтобы увидеть, как вы можете видеть ошибки.

Также может быть, что SoapClient выдает исключение другого типа вместо \SoapFault.Измените этот тип на \Exception и посмотрите, получите ли вы что-нибудь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...