如何在nusoap php的函数中添加错误类型?

时间:2018-04-27 15:59:30

标签: php web-services nusoap fault

我必须克隆使用它的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;
&#13;
&#13;

我的wsdl:

&#13;
&#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"/>
  </operation>
</portType>
&#13;
&#13;
&#13;

需要:

&#13;
&#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;
&#13;
&#13;

0 个答案:

没有答案