webservice xml

614 views
Skip to first unread message

Roxana Specogna

unread,
Jul 25, 2019, 10:46:39 AM7/25/19
to Comunidad de Visual Foxpro en Español
Buenos dias, quiero consumir web service wslsp de afip desde vfp, sigo todos los pasos de los manuales, tengo ya preparados los programas para obtener el token y el sign sin ningun problema. El tema es que cuando quiero consumir el webservice de wslsp en vez de un una cadena como el caso de WSAAS que utiliza loginCms(in0 AS string) AS string, tiene el siguiente parametro generarLiquidacionAvicola() AS VOID por ejemplo. Yo tengo preparado un request.xml con todos los datos que si lo pruebo en soap funciona perfecto y me genera sin problemas el comprobante, pero aca dentro del vfp no se como hacer para enviar ese archivo xml, y tampoco deja poner ningun parametro, todos dan error por ejemplo en el caso de consultar el ultimo nro de comprobante emitido, que pongo los parametros segun el manual, token, sign, cuit, punto de venta y comprobante. Igualmente es mas practico enviar directamente el xml donde ya esta todo ingresado y que funciona, pero no logro darme cuenta como se hace. Si alguien puede ayudarme se lo agradeceria muchisimo.

Diego F.

unread,
Jul 25, 2019, 10:51:01 AM7/25/19
to Comunidad de Visual Foxpro en Español
No entendi como estas trabajando con el webservice. Estas utilizando una libreria de terceros o estas haciendo todo vos desde vfp?

Diego.

Roxana Specogna

unread,
Jul 25, 2019, 11:40:47 AM7/25/19
to Comunidad de Visual Foxpro en Español

Diego F.

unread,
Jul 25, 2019, 11:44:52 AM7/25/19
to Comunidad de Visual Foxpro en Español
Sisi, eso lo se. A lo que me refiero es si estas haciendo todo vos desde vfp o estas utilizando una libreria de terceros. Como obtenes token y sign?

Diego.

Roxana Specogna

unread,
Jul 25, 2019, 12:33:00 PM7/25/19
to Comunidad de Visual Foxpro en Español
El token y el sign lo estoy obteniendo yo, genero el genere el xml, lo pase a base64 como es un string lo pude poner bien en el web service de LoginCmsService que va un string y me dio el result.xml del cual pude obtener sin problemas el token y el sign. Todo lo hice yo, me costo pero lo pude desarrollar.
Utilizando ese token y ese sign generado, genere el request.xml para consultar el ultimo nro emitido o el request.xml para generar la liquidacion, los pruebo con SoapUi 5.5 y funciona perfecto, por eso solo me falta poder enviar esos xml al web service del wslsp pero no se como hacerlo

Intento usar el codigo que da como ejemplo el vfp que es lo que pude ver que recomiendan en los manuales y queda algo asi

LOCAL loLspEndPoint AS "XML Web Service"
* LOCAL loLspEndPoint AS "MSSOAP.SoapClient30"
* Do not remove or alter following line. It is used to support IntelliSense for your XML Web service.
*__VFPWSDef__: loLspEndPoint = https://fwshomo.afip.gov.ar/wslsp/LspService?wsdl , LspService , LspEndPoint
LOCAL loException, lcErrorMsg, loWSHandler
TRY
loWSHandler = NEWOBJECT("WSHandler",IIF(VERSION(2)=0,"",HOME()+"FFC\")+"_ws3client.vcx")
loLspEndPoint = loWSHandler.SetupClient("https://fwshomo.afip.gov.ar/wslsp/LspService?wsdl", "LspService", "LspEndPoint")
* Call your XML Web service here.  ex: leResult = loLspEndPoint.SomeMethod()

       leResult = loLspEndPoint.consultarUltimoNroComprobantePorPtoVta
    
=STRTOFILE(leResult,"respuesta.xml",.f.)

CATCH TO loException
lcErrorMsg="Error: "+TRANSFORM(loException.Errorno)+" - "+loException.Message
DO CASE
CASE VARTYPE(loLspEndPoint)#"O"
* Handle SOAP error connecting to web service
CASE !EMPTY(loLspEndPoint.FaultCode)
* Handle SOAP error calling method
lcErrorMsg=lcErrorMsg+CHR(13)+loLspEndPoint.Detail
OTHERWISE
* Handle other error
ENDCASE
* Use for debugging purposes
MESSAGEBOX(lcErrorMsg)
FINALLY
ENDTRY


Ahora no se como enviarle el request.xml que tengo preparado con todos los parametros, que te vuelvo a decir si lo copio y pego en el soapui va barbaro y puedo hacer las liquidaciones o las consultas perfectamente, pero aca no se como aplicarlo, no se como escribirlo, seguramente es porque no se utilizar esta parte de vfp pero bueno, estoy leyendo y probando todo lo que encuentro pero no encuentro la solucion.

Message has been deleted

Diego F.

unread,
Jul 25, 2019, 1:08:39 PM7/25/19
to Comunidad de Visual Foxpro en Español
De aca podes sacar como trabajar el envio de un xml por webservice...

    Local cXml       := ''
    Local oWSAA      := ''
    Local cRespuesta := ''

    oWSAA  := Win_OleCreateObject( 'MSXML2.XMLHTTP' )
    If( Empty( oWSAA ) )
        WAIT( 'NO se Pudo Crear el Objeto oWSAA;se Cancela el Programa' )
        Return( .f. )
    End
    * Armo el XML con el TRA
    cXml += '<?xml version="1.0" encoding="UTF-8"?>'    + CRLF
    cXml += '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' + CRLF
    cXml += '<soap:Body>'       + CRLF
    cXml += '    <loginCms xmlns="http://wsaa.view.sua.dvadac.desein.afip.gov">' + CRLF
    cXml += '    <in0>' + c_CMS_Base64 + '</in0>'    + CRLF
    cXml += '    </loginCms>'       + CRLF
    cXml += '</soap:Body>'       + CRLF
    cXml += '</soap:Envelope>'       + CRLF
    * Llamo al Webservice y defino Opciones
    oWSAA : Open( 'POST', cWSAA_URL, .f. )
    oWSAA : SetRequestHeader( "SOAPAction:", "None" )
    oWSAA : SetRequestHeader( "Content-Type", "text/xml;charset=UTF-8" )
    * Envio el Archivo y Recibo la Respuesta del WS
    oWSAA : Send( cXml )
    IF oWSAA:status != 200
    * Si el status es diferente a 200, ocurri¢ alg£n error de conectividad con el WS ---
WAIT "ERROR EN LA COMUNICACION"
ENDIF
    cRespuesta := oWSAA : ResponseText


Diego

Diego F.

unread,
Jul 25, 2019, 1:22:58 PM7/25/19
to Comunidad de Visual Foxpro en Español
Adapta las lineas de lo que te pase a vfp por....

        oWSAA  = Createobject("MSXML2.XMLHTTP")
oWSAA.Send()
if oWSAA.status != 200
        oWSAA.Open( 'POST', cWSAA_URL, .f. )
        oWSAA.ResponseText

es muy similar. Tenes que hacer esos pequeños cambios. Yo trabajo en Harbour.
Diego.

Roxana Specogna

unread,
Jul 25, 2019, 1:52:01 PM7/25/19
to Comunidad de Visual Foxpro en Español
Si en eso estoy, no es muy diferente, y tambien adapte que pase a la variable el xml ya armado porque en realidad es lo mismo, pero me dio el siguiente error que esta en el archivo adjunto.

Te muestro como me quedo el código

LOCAL cXml, oWsLsp, cRespuesta, cWsLsp_URL
cXml       = ''
oWsLsp     = ''
cRespuesta = ''

oWsLsp  =  Createobject("MSXML2.XMLHTTP")
If( Empty( oWsLsp ) )
     WAIT( 'NO se Pudo Crear el Objeto oWsLsp;se Cancela el Programa' )
     Return( .f. )
ENDIF 
* Armo el XML con el TRA
cXml=FILETOSTR("Request1.xml")    
    
oWsLsp.Send( cXml )

IF oWsLsp.status != 200
 oWsLsp.Open( 'POST', cWsLsp_URL, .f. )
  * Si el status es diferente a 200, ocurri¢ alg£n error de conectividad con el WS ---
  WAIT "ERROR EN LA COMUNICACION"
ENDIF
cRespuesta = oWsLsp.ResponseText


Pero me da error Function argument value, type or count is invalid.
si bloqueo eso me da mas errores.


Roxana Specogna

unread,
Jul 25, 2019, 3:14:23 PM7/25/19
to Comunidad de Visual Foxpro en Español
Ahi fue cambiando algunas cosas, leyendo, viendo y probando y mejoro bastante, me dio la respuesta aunque no esta bien, pero bueno voy a ir de a poco viendo si lo puedo ir solucionando.
La respuesta enviada fue
<?xml version='1.0' encoding='UTF-8'?>
  <S:Body>
    <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
     <faultcode>S:Client</faultcode>
     <faultstring>Couldn't create SOAP message due to exception: XML reader error: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'r' (code 114) in prolog; expected '&lt;'
 at [row,col {unknown-source}]: [1,1]</faultstring>
    </S:Fault>
  </S:Body>
</S:Envelope>


ahora me voy a ir fijando y desmenusando a ver si son errores del xml o de comunicacion porque me da un error de comunicacion,
Cualquier idea sera bienvenida
Gracias

Roxana Specogna

unread,
Jul 25, 2019, 4:48:45 PM7/25/19
to Comunidad de Visual Foxpro en Español
Listo, ya lo solucione, muchisimas gracias por tu ayuda Diego
Un abrazo



Luis suescún

unread,
Jul 25, 2019, 11:16:25 PM7/25/19
to publice...@googlegroups.com
Hola, comparte la solución, explica que tenías mal..
Muchas gracias

El jue., 25 jul. 2019 15:48, Roxana Specogna <roxanas...@gmail.com> escribió:
Listo, ya lo solucione, muchisimas gracias por tu ayuda Diego
Un abrazo



--
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/a19523c3-540b-4719-96be-3f4a34e021ef%40googlegroups.com.

Diego F.

unread,
Jul 26, 2019, 6:16:59 AM7/26/19
to Comunidad de Visual Foxpro en Español
Perfecto Roxana!

Diego.

Roxana Specogna

unread,
Jul 26, 2019, 8:29:56 AM7/26/19
to publice...@googlegroups.com
Me falta terminar de adaptar lo que me habia pasado Diego en la linea       oWSAA.Open( 'POST', cWSAA_URL, .f. ) no estaba bien puesta la url, solo era eso, por eso me daba el error de conexion.


Libre de virus. www.avast.com

Edwin Duran

unread,
Aug 19, 2019, 4:42:29 PM8/19/19
to Comunidad de Visual Foxpro en Español
Saludos voy a provechar este hilo, en el siguiente Link https://dgii.gov.do/wsMovilDGII/WSMovilDGII.asmx?op=GetContribuyentes

me da la información para armar el webservice, lo que quiero manejar es lo siguiente o validar RNC https://dgii.gov.do/servicios/consultas/Paginas/RNC.aspx
es decir si coloco el numero 131495087 y el resultado es 
Nombre/Razón SocialDESARROLLO EMPRESARIAL DE SISTEMA INFORMATICO WEB DESIWEB SRL

El se conecta sin error, pero el no me trae el resultado correcto, me trae otra información, anexo código utilizado



webservice_dgii.prg
Reply all
Reply to author
Forward
0 new messages