我必须克隆使用它的Web服务,然后我所拥有的是使用php和nusoap消耗其他服务的服务,这是我应该使用的服务:http://pruebas.ecodex.com.mx:2044/ServicioSeguridad.svc?wsdl这是我的wsdl {{ 3}}这是我生成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>
&#13;
我的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>
&#13;
需要:
<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>
&#13;