Cnexion WEB SERVICE

Cnexion WEB SERVICE

Postby PGO » Tue Oct 13, 2020 5:48 pm

Buenas tardes

Estoy desarrollando una aplicación que conecta con un Webservice de una aplicación de venta on-line.

Hasta el momento he podido integrar todas las opciones que ofrece el servicio, pedidos realizados, empaquetado, etc.

El problema me viene a la hora de solicitar la emisión de la etiqueta para el transporte, la cual una vez enviada la petición devuelve lo siguiente:

Code: Select all  Expand view
{
  "id": 295208,
  "fileContents": "JVBERi0xLjQKJdP0zOEKMSAwIG9iago8PAovQ3JlYX[...]",
  "contentType": "application/pdf",
  "fileName": "label_ASUS12_186934_295208_20180712082022.pdf"
}
 


Mi problema está en que no sé como puedo descargar el fichero PDF para la posterior impresión.

Gracias
PGO
 
Posts: 17
Joined: Tue Aug 25, 2020 10:05 pm

Re: Cnexion WEB SERVICE

Postby karinha » Tue Oct 13, 2020 11:24 pm

Holá, sin código, no és posible tener como ayudar. Post el código, porfa. Gracias, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7434
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cnexion WEB SERVICE

Postby PGO » Tue Oct 13, 2020 11:51 pm

He creado una clase la cual llamo oApi

donde

oApi:oHttp:= CreateObject( 'MSXML2.ServerXMLHTTP.6.0' )


El código donde llamo a las etiquetas es

Code: Select all  Expand view
 
       cUrl:=cUrl1 + alltrim(str(oApi:aTbr5[x,3])) + "/label"
       oApi:oHttp:Open( "POST" , cUrl, .F. )
       oApi:oHttp:setRequestHeader("Content-Type","application/json")
        oApi:oHttp:setRequestHeader("Authorization", "Bearer " + oApi:vToken)
        oApi:oHttp:setRequestHeader("labelType", "pdf") 
        oApi:oHttp:Send()

        if oApi:oHttp:status <> 200
            msg("No se ha podido Generar la etiqueta"
        else
            msg(oApi:oHttp:ResponseText)
        end if
 


la variable cUrl1 es la que contiene la URL

Gracias por tu interes.
PGO
 
Posts: 17
Joined: Tue Aug 25, 2020 10:05 pm

Re: Cnexion WEB SERVICE

Postby karinha » Wed Oct 14, 2020 2:07 am

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7434
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cnexion WEB SERVICE

Postby leandro » Wed Oct 14, 2020 2:40 pm

Según lo que yo entiendo el pdf viene en el nodo fileContents codificado en base64

{
"id": 295208,
"fileContents": "JVBERi0xLjQKJdP0zOEKMSAwIG9iago8PAovQ3JlYX[...]",
"contentType": "application/pdf",
"fileName": "label_ASUS12_186934_295208_20180712082022.pdf"
}

Yo lo recuperaría de la siguiente manera:

Code: Select all  Expand view


hRespuesta  := hash()
hb_jsondecode(response ,@hRespuesta  )
fPdf := hb_base64decode(hRespuesta["fileContents"])

 
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1489
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Cnexion WEB SERVICE

Postby PGO » Thu Oct 15, 2020 5:46 pm

Gracias por vuestra colaboración.

Ya me funciona perfectamente

hb_base64decode no me funcionaba (supongo que por la libreria o la versión), pero gracias al foro he encontrado y usado la función Base64ToStr.

Code: Select all  Expand view

            vRet:=fCrea_array(alltrim(oApi:oHttp:ResponseText))
            cPdf:=Base64ToStr_1( vRet[2,2] )
            handle:=fCreate("z:\prueba.pdf")
            fwrite(handle,cPdf)
            fclose(handle)
 


Un Saludo
PGO
 
Posts: 17
Joined: Tue Aug 25, 2020 10:05 pm


Return to FiveWin para Harbour/xHarbour

Who is online

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