Я должен клонировать веб-сервис, использующий его, тогда у меня есть сервис, который использует другой сервис, используя php и nusoap, это сервис, который я должен использовать: http://pruebas.ecodex.com.mx:2044/ServicioSeguridad.svc?wsdl а это мой wsdl https://timbrado1.dcigroupmexico.com.mx/ServicioSeguridad.php?wsdl это мой код для генерации wsdl:
ini_set('soap.wsdl_cache_enabled',0);
ini_set('soap.wsdl_cache_ttl',0);
include_once('includes.php');
class ServicioSeguridad
{
private $_soapServer = null;
public function __construct()
{
$this->_soapServer = new soap_server();
$this->_soapServer->configureWSDL("ServicioSeguridad" );
#elements/complexTypes{
#SolicitudObtenerToken{
$this->_soapServer->wsdl->addElement(
array('name' =>'SolicitudObtenerToken',
'nillable'=>'true',
'type' =>'SolicitudObtenerToken')
);
$this->_soapServer->wsdl->addComplexType(
'SolicitudObtenerToken',
'complexType',
'struct',
'sequence',
'',
array(
'RFC' => array('name' =>'RFC',
'type' =>'xsd:string',
'nillable' =>'true',
'minOccurs'=>'0'),
'TransaccionID'=> array('name' =>'TransaccionID',
'type' =>'xsd:long',
'minOccurs'=>'0')
)
);
#}
#RespuestaObtenerToken{
$this->_soapServer->wsdl->addElement(
array('name' =>'RespuestaObtenerToken',
'nillable'=>'true',
'type' =>'RespuestaObtenerToken')
);
$this->_soapServer->wsdl->addComplexType(
'RespuestaObtenerToken',
'complexType',
'struct',
'sequence',
'',
array(
'Token' => array('name' =>'Token',
'type' =>'xsd:string',
'nillable' =>'true',
'minOccurs'=>'0'),
'TransaccionID'=> array('name' =>'TransaccionID',
'type' =>'xsd:long',
'minOccurs'=>'0')
)
);
#}
#FallaServicio{
$this->_soapServer->wsdl->addElement(
array('name' =>'FallaServicio',
'nillable'=>'true',
'type' =>'FallaServicio')
);
$this->_soapServer->wsdl->addComplexType(
'FallaServicio',
'complexType',
'struct',
'sequence',
'',
array(
'RFC' =>array('name' =>'RFC',
'type' =>'xsd:string',
'nillable'=>'true'),
'Numero' =>array('name'=>'Numero',
'type'=>'xsd:int'),
'Descripcion'=>array('name' =>'Descripcion',
'type' =>'xsd:string',
'nillable' =>'true',
'minOccurs'=>'0'),
'Evento' =>array('name' =>'Evento',
'type' =>'xsd:string',
'nillable' =>'true',
'minOccurs'=>'0')
)
);
#}
#FallaSesion{
$this->_soapServer->wsdl->addElement(
array('name' =>'FallaSesion',
'nillable'=>'true',
'type' =>'FallaSesion')
);
$this->_soapServer->wsdl->addComplexType(
'FallaSesion',
'complexType',
'struct',
'all',
'',
array(
'RFC' =>array('name' =>'RFC',
'type' =>'xsd:string',
'nillable'=>'true'),
'Estatus' =>array('name' =>'Estatus',
'type' =>'xsd:int',
'minOccurs'=>'0'),
'Descripcion'=>array('name' =>'Descripcion',
'type' =>'xsd:string',
'nillable' =>'true',
'minOccurs'=>'0')
)
);
#}
#}
$this->_soapServer->register(
'Seguridad.ObtenerToken', // method name
array('SolicitudObtenerToken'=>'tns:SolicitudObtenerToken'), // input parameters
array('RespuestaObtenerToken' => 'tns:RespuestaObtenerToken'), // output parameters
false, // namespace
false, // soapaction
'rpc', // style
'encoded', // use
'Servicio que regresa un Token' // documentation
);
//procesamos el webservice
$this->_soapServer->service(file_get_contents("php://input"));
//$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
//$this->_soapServer->service($HTTP_RAW_POST_DATA);
}
}
$server = new ServicioSeguridad();
Когда я отправляю информацию правильно, она отвечает без проблем, но проблема заключается в том, что я возвращаю ошибку службе, поскольку они не добавляются в функцию, происходит сбой, потому что объектов там нет. Оригинальный код:
<wsdl:portType name="Seguridad">
<wsdl:operation name="ObtenerToken">
<wsdl:input wsaw:Action="http://Ecodex.WS.Model/2011/CFDI/Seguridad/ObtenerToken" name="SolicitudObtenerToken" message="tns:SolicitudObtenerToken"/>
<wsdl:output wsaw:Action="http://Ecodex.WS.Model/2011/CFDI/Seguridad/ObtenerTokenResponse" name="RespuestaObtenerToken" message="tns:RespuestaObtenerToken"/>
<wsdl:fault wsaw:Action="http://Ecodex.WS.Model/2011/CFDI/Seguridad/ObtenerTokenFallaServicioFault" name="FallaServicioFault" message="tns:Seguridad_ObtenerToken_FallaServicioFault_FaultMessage"/>
<wsdl:fault wsaw:Action="http://Ecodex.WS.Model/2011/CFDI/Seguridad/ObtenerTokenFallaSesionFault" name="FallaSesionFault" message="tns:Seguridad_ObtenerToken_FallaSesionFault_FaultMessage"/>
</wsdl:operation>
</wsdl:portType>
Задача ещё не решена.
Других решений пока нет …