如何在 PHP 中使用 CDATA 创建 SOAP 请求
How to create a SOAP request using CDATA in PHP
我是 SOAP 新手,我想创建一个 SOAP 请求,如下所示。输入 xml (strEntrada) 必须在请求 header.
中发送
这是运行良好的屏幕截图。
这是我构建的 PHP 脚本。但是没用。
<?php
$TokenValue = array( 'usuario' => "WSEMPJALISCO", 'password' => "AU77O", );
$providerConsultas = 'http://www5.abaseguros.com/PersonaConnect/PCRegistro.svc?wsdl';
$_clientConsultas = new SoapClient($providerConsultas, array('trace' => true, "exceptions" => true));
$xml = '<![CDATA[ <XML>
<DP>
<TP>0</TP>
<FISICA>
<RFC>CARJ800701</RFC>
<HCVE></HCVE>
<PNOM>JORGE</PNOM>
<SNOM>LEONARDO</SNOM>
<APP>CARO</APP>
<APM>RAMIREZ</APM>
<SEXO>1</SEXO>
<EDOCIVIL>1</EDOCIVIL>
</FISICA>
<DOMICILIO>
<TIPODIR>1</TIPODIR>
<CALLE>VALLE DEL YAQUI 2177</CALLE>
<NUMEXT>350</NUMEXT>
<NUMINT></NUMINT>
<COL>PARQUES DE LA CA-ADA</COL>
<CP>45720</CP>
<POB>SALTILLO</POB>
</DOMICILIO>
<TELEFONO>
<LADA>33</LADA>
<NUMERO>26766476</NUMERO>
</TELEFONO>
<CELULAR>
<LADA>33</LADA>
<NUMERO>26766476</NUMERO>
</CELULAR>
<CORREO>LEONARDO.CARO@OUTLOOK.COM</CORREO>
</DP>
</XML> ]]>';
$headers = array();
$headers[] = new SoapHeader('http://tempuri.org/',
'Token',
$TokenValue);
$headerVar = new SoapVar($xml, XSD_ANYXML);
$headers[] = new SoapHeader('http://tempuri.org/',
'strEntrada',
$headerVar);
$_clientConsultas ->__setSoapHeaders($headers);
try {
$result = $_clientConsultas->ConsultaRegistraPersona(); // $xml variable with the required XML
// Results are obtained
$data = $result->strSalida;
echo $data;
} catch (SoapFault $fault) {
// catches soap faults
echo 'SoapFault exception: ', $fault->getMessage(), "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
谁能帮我在PHP中发送上述soap请求?谢谢
最后,我找到了如何将 XML CDATA 添加到 soap header 的解决方案。
这是运行良好的 PHP 脚本。
<?php
$headers = array();
class TokenHeader {
public $usuario = "******"; // usuario con permisos para usar el servicio de conexión
public $password = "******"; // password del usuario con permisos para usar el servicio de conexión
public $referencia = "";
}
$TokenHeader = new TokenHeader;
$headers[] = new SOAPHeader('http://tempuri.org/', 'Token', $TokenHeader);
$strEntrada = "<XML>
<DP>
<TP>0</TP>
<FISICA>
<RFC>CARJ800701</RFC>
<HCVE></HCVE>
<PNOM>JORGE</PNOM>
<SNOM>LEONARDO</SNOM>
<APP>CARO</APP>
<APM>RAMIREZ</APM>
<SEXO>1</SEXO>
<EDOCIVIL>1</EDOCIVIL>
</FISICA>
<DOMICILIO>
<TIPODIR>1</TIPODIR>
<CALLE>VALLE DEL YAQUI 2177</CALLE>
<NUMEXT>350</NUMEXT>
<NUMINT></NUMINT>
<COL>PARQUES DE LA CA-ADA</COL>
<CP>45720</CP>
<POB>SALTILLO</POB>
</DOMICILIO>
<TELEFONO>
<LADA>33</LADA>
<NUMERO>26766476</NUMERO>
</TELEFONO>
<CELULAR>
<LADA>33</LADA>
<NUMERO>26766476</NUMERO>
</CELULAR>
<CORREO>LEONARDO.CARO@OUTLOOK.COM</CORREO>
</DP>
</XML>";
$headers[] = new SOAPHeader('http://tempuri.org/', 'strEntrada', $strEntrada);
$providerConsultas = "http://www5.abaseguros.com/PersonaConnect/PCRegistro.svc?wsdl";
$_clientConsultas = new SoapClient($providerConsultas, array("trace" => true));
$_clientConsultas->__setSoapHeaders($headers);
try { // Abrimos un try..catch para obtener los mensajes de error
$result = $_clientConsultas->ConsultaRegistraPersona(array('strEntrada' => ""));
$data = $result->strSalida;
echo $data;
} catch (Exception $e) { // En caso de producirse un error
echo $e->getMessage();
}
?>
我是 SOAP 新手,我想创建一个 SOAP 请求,如下所示。输入 xml (strEntrada) 必须在请求 header.
中发送这是运行良好的屏幕截图。
这是我构建的 PHP 脚本。但是没用。
<?php
$TokenValue = array( 'usuario' => "WSEMPJALISCO", 'password' => "AU77O", );
$providerConsultas = 'http://www5.abaseguros.com/PersonaConnect/PCRegistro.svc?wsdl';
$_clientConsultas = new SoapClient($providerConsultas, array('trace' => true, "exceptions" => true));
$xml = '<![CDATA[ <XML>
<DP>
<TP>0</TP>
<FISICA>
<RFC>CARJ800701</RFC>
<HCVE></HCVE>
<PNOM>JORGE</PNOM>
<SNOM>LEONARDO</SNOM>
<APP>CARO</APP>
<APM>RAMIREZ</APM>
<SEXO>1</SEXO>
<EDOCIVIL>1</EDOCIVIL>
</FISICA>
<DOMICILIO>
<TIPODIR>1</TIPODIR>
<CALLE>VALLE DEL YAQUI 2177</CALLE>
<NUMEXT>350</NUMEXT>
<NUMINT></NUMINT>
<COL>PARQUES DE LA CA-ADA</COL>
<CP>45720</CP>
<POB>SALTILLO</POB>
</DOMICILIO>
<TELEFONO>
<LADA>33</LADA>
<NUMERO>26766476</NUMERO>
</TELEFONO>
<CELULAR>
<LADA>33</LADA>
<NUMERO>26766476</NUMERO>
</CELULAR>
<CORREO>LEONARDO.CARO@OUTLOOK.COM</CORREO>
</DP>
</XML> ]]>';
$headers = array();
$headers[] = new SoapHeader('http://tempuri.org/',
'Token',
$TokenValue);
$headerVar = new SoapVar($xml, XSD_ANYXML);
$headers[] = new SoapHeader('http://tempuri.org/',
'strEntrada',
$headerVar);
$_clientConsultas ->__setSoapHeaders($headers);
try {
$result = $_clientConsultas->ConsultaRegistraPersona(); // $xml variable with the required XML
// Results are obtained
$data = $result->strSalida;
echo $data;
} catch (SoapFault $fault) {
// catches soap faults
echo 'SoapFault exception: ', $fault->getMessage(), "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
谁能帮我在PHP中发送上述soap请求?谢谢
最后,我找到了如何将 XML CDATA 添加到 soap header 的解决方案。
这是运行良好的 PHP 脚本。
<?php
$headers = array();
class TokenHeader {
public $usuario = "******"; // usuario con permisos para usar el servicio de conexión
public $password = "******"; // password del usuario con permisos para usar el servicio de conexión
public $referencia = "";
}
$TokenHeader = new TokenHeader;
$headers[] = new SOAPHeader('http://tempuri.org/', 'Token', $TokenHeader);
$strEntrada = "<XML>
<DP>
<TP>0</TP>
<FISICA>
<RFC>CARJ800701</RFC>
<HCVE></HCVE>
<PNOM>JORGE</PNOM>
<SNOM>LEONARDO</SNOM>
<APP>CARO</APP>
<APM>RAMIREZ</APM>
<SEXO>1</SEXO>
<EDOCIVIL>1</EDOCIVIL>
</FISICA>
<DOMICILIO>
<TIPODIR>1</TIPODIR>
<CALLE>VALLE DEL YAQUI 2177</CALLE>
<NUMEXT>350</NUMEXT>
<NUMINT></NUMINT>
<COL>PARQUES DE LA CA-ADA</COL>
<CP>45720</CP>
<POB>SALTILLO</POB>
</DOMICILIO>
<TELEFONO>
<LADA>33</LADA>
<NUMERO>26766476</NUMERO>
</TELEFONO>
<CELULAR>
<LADA>33</LADA>
<NUMERO>26766476</NUMERO>
</CELULAR>
<CORREO>LEONARDO.CARO@OUTLOOK.COM</CORREO>
</DP>
</XML>";
$headers[] = new SOAPHeader('http://tempuri.org/', 'strEntrada', $strEntrada);
$providerConsultas = "http://www5.abaseguros.com/PersonaConnect/PCRegistro.svc?wsdl";
$_clientConsultas = new SoapClient($providerConsultas, array("trace" => true));
$_clientConsultas->__setSoapHeaders($headers);
try { // Abrimos un try..catch para obtener los mensajes de error
$result = $_clientConsultas->ConsultaRegistraPersona(array('strEntrada' => ""));
$data = $result->strSalida;
echo $data;
} catch (Exception $e) { // En caso de producirse un error
echo $e->getMessage();
}
?>