Como imlementar SOAP en FWH

Como imlementar SOAP en FWH

Postby Vladimir Zorrilla » Sat Jul 22, 2006 5:43 pm

Amigos

Necesito implemetar un cliente SOAP con FWH en VFP esta todo listo en
FWH como podria hacer

Alguien pueda darme una AYUDA

En este link esta lo que necesito hacer

http://www.aduanet.gob.pe/aduanas/opera ... rvices.htm

En VFP ya lo tienen listo

Web Services desde Visual Fox Pro

También se adiciona un programa que invoca a los Web Services desde un cliente hecho en Visual Fox Pro.

Este ejemplo lo pueden encontrar también en la siguiente ruta http://www.aduanet.gob.pe/js/app/WebSer ... FoxPro.zip junto con la librería FoxCrypto.fll. La libreria FoxCrypto.fll contiene la función que codifica y decodifica en base 64., el cual permite el trabajo tipo de datos bytes.

Prueba.prg

SET LIBRARY TO FoxCrypto.FLL

PROCEDURE psEnviArchivo

***********************

*envia archivo

PARAMETER pArc

tcInFile = IIF(EMPTY(pArc),"C:\desaprg\prueba\CDDEmbargoM4.htm", pArc)

lcInFile = FILETOSTR(tcInFile)

lcInFile64 = codifica(lcInFile)

***

doc = CreateObject("MSXML2.DOMDocument")

http = CreateObject("MSXML2.XMLHTTP")

http.Open("POST", "http://desweb1:8001/portafolio/portafolio", .F.)

http.SetRequestHeader("SOAPAction", "enviaArchivoWebService")

http.SetRequestHeader("Content-Type", "text/xml")

**carga el archivo

xml = fnArmaCadXml("A", "0091", "XXXX", "142", lcInFile64, "CDDEmbargoM5.htm")

doc.LoadXML(xml)

http.Send(doc.xml)

res = CreateObject("MSXML2.DOMDocument")

response = http.responseText

*?response

res.LoadXML(http.responseText)

txt = res.selectSingleNode("//NroEnvioGenerado") &&Return

IF nvl(txt.text,' ') = " " THEN

TXT="ERROR EN WS "

ENDIF

wait window txt.text NOWAIT

*? txt.text

release doc

release http

release res

release response

RETURN

FUNCTION decodifica

PARAMETER pCadena

LOCAL lcBinary, lnHandle, lnSize

lnHandle = Base64DecoderCreate()

IF lnHandle > 0

Base64DecoderPut(lnHandle, pCadena)

Base64DecoderClose(lnHandle)

lnSize = Base64DecoderMaxRetrievable(lnHandle)

lcBinary = Base64DecoderGet(lnHandle, lnSize)

Base64DecoderDestroy(lnHandle)

ELSE

WAIT WIND "ERROR al instanciar"

RETURN .F.

ENDIF

RETURN lcBinary



FUNCTION codifica

PARAMETER pCadena

LOCAL lcBase64, lcInFile, lnHandle, lnSize

lnHandle = Base64EncoderCreate( .T. )

IF lnHandle > 0

Base64EncoderPut(lnHandle, pCadena)

Base64EncoderClose(lnHandle)

lnSize = Base64EncoderMaxRetrievable(lnHandle)

lcBase64 = Base64EncoderGet(lnHandle, lnSize)

Base64EncoderDestroy(lnHandle)

ELSE

WAIT WIND "ERROR al instanciar"

RETURN .F.

ENDIF

RETURN lcBase64



FUNCTION fnArmaCadXml

*********************

PARAMETER pTOpe, pOpe, pClave, pAdu, pArch, pNomArch

strxml = [<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"] + CHR(13)

strxml = strxml + [ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"] + CHR(13)

strxml = strxml + [ xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"] + CHR(13)

strxml = strxml + [ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">] + CHR(13)

strxml = strxml + [ <env:Header>] + CHR(13)

strxml = strxml + [ </env:Header>] + CHR(13)

strxml = strxml + [ <env:Body>] + CHR(13)

strxml = strxml + [ <m:enviaArchivoWebService xmlns:m="http://www.bea.com/education/webservices/examples/basic/javaclass"] + CHR(13)

strxml = strxml + [ env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">] + CHR(13)

strxml = strxml + [ <toperador xsi:type="xsd:string">] + pTOpe + [</toperador>] + CHR(13)

strxml = strxml + [ <operador xsi:type="xsd:string">] + pOpe + [</operador>] + CHR(13)

strxml = strxml + [ <clave xsi:type="xsd:string">] + pClave + [</clave>] + CHR(13)

strxml = strxml + [ <aduana xsi:type="xsd:string">] + pAdu + [</aduana>] + CHR(13)

strxml = strxml + [ <archivoEnvioByte xsi:type="xsd:base64Binary">] + pArch + [</archivoEnvioByte>] + CHR(13)

strxml = strxml + [ <nombreArchivo xsi:type="xsd:string">] + pNomArch+ [</nombreArchivo>] + CHR(13)

strxml = strxml + [ </m:enviaArchivoWebService>] + CHR(13)

strxml = strxml + [ </env:Body>] + CHR(13)

strxml = strxml + [</


Gracias por la Ayuda

Vladimir Zorrilla
cps_net@hotmail.com
ME INTERESA FW Y XHB POR SER OPEN SOURCE
Vladimir Zorrilla
 
Posts: 225
Joined: Tue Feb 28, 2006 4:25 pm
Location: PERU

Postby Antonio Linares » Mon Jul 24, 2006 6:35 am

Vladimir,

Lo vamos a revisar y te comentamos.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42127
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby R.F. » Mon Jul 24, 2006 5:59 pm

Estoy mirando que eso utiliza OLE, simplemente con xHarbour puedes hacer:

Code: Select all  Expand view  RUN
Function psEnviArchivo(pArc)

***********************
*envia archivo

tcInFile = IIF(EMPTY(pArc),"C:\desaprg\prueba\CDDEmbargoM4.htm", pArc)

***

doc = TOleAuto():New("MSXML2.DOMDocument")
http = TOleAuto():New("MSXML2.XMLHTTP")

http:Open("POST", "http://desweb1:8001/portafolio/portafolio", .F.)
http:SetRequestHeader("SOAPAction", "enviaArchivoWebService")
http:SetRequestHeader("Content-Type", "text/xml")

**carga el archivo
xml := fnArmaCadXml("A", "0091", "XXXX", "142", lcInFile64, "CDDEmbargoM5.htm")

doc:LoadXML(xml)
http:Send(doc.xml)

res := TOleAuto():New("MSXML2.DOMDocument")

response = http:responseText

res:LoadXML(http:responseText)

txt = res:selectSingleNode("//NroEnvioGenerado") &&Return

IF nvl(txt.text,' ') = " " THEN

TXT="ERROR EN WS "

ENDIF

RETURN
Saludos
R.F.
R.F.
 
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 64 guests