webservice para republica dominicana

624 views
Skip to first unread message

Jose Daniel Camilo Ruiz

unread,
Sep 24, 2019, 9:50:45 PM9/24/19
to Comunidad de Visual Foxpro en Español
hace unos dias se trato el tema de consumir webservice para republica dominicana,

despues de despurar varios codigos este es el resultado, trabajando y algo simplicado

solo me falto pasar parametro al text donde dice rnc_Cedula, alguna idea sera bien recivida



oWS = CREATEOBJECT( "VFP_WebService","http://dgii.gov.do/wsMovilDGII/WSMovilDGII.asmx")
lcRespuesta = oWS.GetNATransaccion()
IF oWS.iStatus != 0
MESSAGEBOX(oWS.sError,16,"Error al ejecutar WS")
ELSE
MESSAGEBOX(lcRespuesta,64,"EjecutandoWS desde VFP")
ENDIF  

DEFINE CLASS VFP_WebService AS CUSTOM

sError = ""
iStatus = 0
sURL_WS = ""

* --- Definimos la función del WebService ---
FUNCTION GetNATransaccion ()
                
     TEXT TO sXMLRequest TEXTMERGE NOSHOW 
                  <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:dgii="http://dgii.gov.do/">
                  <soap:Header/>
                       <soap:Body>
                            <dgii:GetContribuyentes>
                                 <dgii:value>02300031065</dgii:value>
                                 <dgii:patronBusqueda>0</dgii:patronBusqueda>
                                 <dgii:inicioFilas>0</dgii:inicioFilas>
                                 <dgii:filaFilas>0</dgii:filaFilas>
                                 <dgii:IMEI>?</dgii:IMEI>
                            </dgii:GetContribuyentes>
                       </soap:Body>
                  </soap:Envelope>
             ENDTEXT 
 
pXMLResponse = ADDBS(SYS(2023)) + SYS(2015) + [.xml]
* --- Paso 2. Ejecuto el WS | Paso 3. Obtengo el Response ---
this.iStatus =  this.EjecutaWS( this.sURL_WS, sXMLRequest , pXMLResponse, ["] + ALLTRIM(STR(LEN(sXMLRequest))) + ["])

IF this.iStatus != 0  && Ocurrió un error el cual está especificado en sError.
RETURN ""
ENDIF

sXMLResponse = Filetostr(pXMLResponse)
        sRespuestaWS = sXMLResponse
this.borraArchivo(pXMLResponse)
RETURN sRespuestaWS
ENDFUNC 
*---------------------------------------------------
FUNCTION EjecutaWS(pURL_WSDL, pFileRequest , pFileResponse, pLength )
*---------------------------------------------------
   TRY     
    oHTTP = CREATEOBJECT('Msxml2.ServerXMLHTTP.6.0')
    oHTTP.OPEN("POST", pURL_WSDL, .F.)
    oHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8")
    oHTTP.setRequestHeader("Content-Length",pLength)
    oHTTP.setRequestHeader("SOAPAction","http://dgii.gov.do/GetContribuyentes")
    oHTTP.SEND(pFileRequest)
   CATCH TO loErr
    this.sError = "Error: " + TRANSFORM(loErr.ErrorNo) +  " Mensaje: " + loErr.Message
    this.iStatus = -1    
   ENDTRY 
   IF this.iStatus != 0
    RETURN -1
   ENDIF 
    * --- Si el status es diferente a 200, ocurrió algún error de conectividad con el WS ---
    IF oHTTP.STATUS = 200
        RespuestaWS = oHTTP.responseText
    * --- Se genera el XML del response | Este es el paso 3!! ---
   
    STRTOFILE(STRCONV(RespuestaWS,9),pXMLResponse)
    this.iStatus = 0
    this.sError = ""
    RETURN 0
    ELSE
        this.sError = "Error: No se logró la conexión con el Web Service."
        this.iStatus = -1
RETURN -1
    ENDIF
ENDFUNC 
*---------------------------------------------------

    *---------------------------------------------------
FUNCTION BorraArchivo(pFile)
*---------------------------------------------------
IF FILE(pFile)
DELETE FILE (pFile)
ENDIF 
ENDFUNC 
*---------------------------------------------------

*---------------------------------------------------
* Evento constructor
PROCEDURE Init
*---------------------------------------------------
LPARAMETERS tcURLWS
        this.sURL_WS = tcURLWS
        this.iStatus = 0
        this.sError = ""
ENDPROC
*---------------------------------------------------

ENDDEFINE 

HernanCano

unread,
Sep 24, 2019, 11:29:30 PM9/24/19
to Comunidad de Visual Foxpro en Español
** RepDominicana.prg


*!* Jose Daniel Camilo Ruiz
*!* 20:50 (hace 1 hora)
*!* Hace unos dias se trató el tema de consumir webservice para República Dominicana.

*!* Después de depurar varios códigos, éste es el resultado; trabajando y algo simplificado.

*!* Sólo me faltó pasar parámetro al Text donde dice rnc_Cedula. Alguna idea será bien recibida.



** La solución a tu inquietud ya había sido resuelta en el tema en que se presentó:
** puedes mirar en mis participaciones el DGII.prg
** De hecho participaste ahí... aunque con otro nombre y otro email...

** Qué extraño que no sepas pasar una valor como parámetro....
** Pero de todas formas aquí te paso la solución


** evento Click de un botón que se podría llamar cmdConsultar 
**   en el formulario donde está un TextBox que se podría llamar txtCedula

RepDominicana.prg

Edwin Duran

unread,
Sep 25, 2019, 12:13:58 PM9/25/19
to Comunidad de Visual Foxpro en Español
Excelente Hernan
Reply all
Reply to author
Forward
0 new messages