Я должен клонировать веб-сервис, использующий его, тогда у меня есть сервис, который использует другой сервис, используя 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="ServicioSeguridadPortType">
<operation name="Seguridad.ObtenerToken">
<documentation>Servicio que retorna un Token</documentation>
<input message="tns:Seguridad.ObtenerTokenRequest"/>
<output message="tns:Seguridad.ObtenerTokenResponse"/>
</operation>
</portType>
необходимо:
<portType name="ServicioSeguridadPortType">
<operation name="Seguridad.ObtenerToken">
<documentation>Servicio que retorna un Token</documentation>
<input message="tns:Seguridad.ObtenerTokenRequest"/>
<output message="tns:Seguridad.ObtenerTokenResponse"/>
<fault message="tns:Seguridad.FallaServicioFault"/>
<fault message="tns:Seguridad.FallaSesionFault"/>
</operation>
</portType>