Soap Звоните и __doRequest - PullRequest
0 голосов
/ 16 марта 2020

Я звоню в веб-службу, но не могу получить ответ. Мне нужен специальный «конверт», поэтому я создал его сам и использовал его для вызова веб-службы. Это все, что я сделал:

$sobre  = '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">';
$sobre .= '<Body><cargaTituloElectronicoRequest xmlns="http://ws.web.mec.sep.mx/schemas">';
$sobre .= '<nombreArchivo>' . $arch . '</nombreArchivo>';
$sobre .= '<archivoBase64>' .$xml . '</archivoBase64>';
$sobre .= '<autenticacion><usuario>' . $user . '</usuario><password>' . $pass . '</password></autenticacion>';
$sobre .= '</cargaTituloElectronicoRequest></Body></Envelope>';

$location_URL="https://metqa.siged.sep.gob.mx/met-ws/services/TitulosElectronicos.wsdl";
$action      ="https://metqa.siged.sep.gob.mx/met-ws/services/TitulosElectronicos.wsdl/cargaTituloElectronico";

$client = new SoapClient($location_URL, array('trace' => 1));
try{
        $resultado = $client->__doRequest($sobre, $location_URL, $action, 'SOAP_1_2', 0);
}catch (SoapFault $exception){
    var_dump(get_class($exception));
    var_dump($exception);
    $numLote = 0;
}
echo "REQUEST:\n" . htmlentities($client->__getLastRequest()) . "\n";

Я не получаю __getLastRequest(), (не знаю почему) ... и "$action" Я уже использовал только метод ('cargaTituloElectronico '), но это не работает.
Я не могу использовать $client->cargaTituloElectronico($params), потому что автоматически сгенерированный конверт не принят сервером.
Я был бы очень признателен за вашу помощь. Заранее спасибо

1 Ответ

0 голосов
/ 22 марта 2020

Решение этой проблемы:

Объявите новый класс, расширяющий SoapClient, а затем перегрузите метод __doRequest, используя свой собственный конверт.

Вот и все. Это сработало.

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