Php Soap调用和\uuuuu doRequest

Php Soap调用和\uuuuu doRequest,php,web-services,soap,Php,Web Services,Soap,我正在呼叫一个web服务,但我就是找不到答案。我需要一个特殊的“信封”,所以我自己创建了一个,并用它来调用web服务。这就是我所做的一切: $sobre = '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">'; $sobre .= '<Body><cargaTituloElectronicoRequest xmlns="http://ws.web.mec.sep.mx/schemas">

我正在呼叫一个web服务,但我就是找不到答案。我需要一个特殊的“信封”,所以我自己创建了一个,并用它来调用web服务。这就是我所做的一切:

$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";
$sobre='';
$sobre.='';
$sobre.=''$拱门;
$sobre.=''.$xml';
$sobre.=''$用户。“”$通过",;
$sobre.='';
$location\u 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=newsoapclient($location\uurl,array('trace'=>1));
试一试{
$resultado=$client->\u doRequest($sobre,$location\u URL,$action,'SOAP\u 1\u 2',0);
}catch(SoapFault$异常){
var_dump(get_类($exception));
var_dump($例外);
$numLote=0;
}
回显“请求:\n”。htmlentities($client->\uu getLastRequest()。“\n”;
我没有收到
\uu getLastRequest()
,(不知道为什么)。。。和“
$action
”我已经使用了这个方法(“
cargaTituloElectronico
”),但它不起作用。
我不能使用
$client->cargatitultoloelectronico($params)
,因为服务器不接受自动生成的信封

我真的很感激你的帮助。提前感谢

此问题的解决方案:

声明一个扩展SoapClient的新类,然后使用您自己的evelope重载_doRequest方法


就这样。它成功了。

我现在有了一个解决方案。您必须声明一个扩展SoapClient的新类,然后使用自己的evelope重载_doRequest方法。就这样。简单。