Cnexion WEB SERVICE

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

Cnexion WEB SERVICE

Post by PGO »

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

{
  "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
User avatar
karinha
Posts: 7928
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Cnexion WEB SERVICE

Post by karinha »

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
PGO
Posts: 17
Joined: Tue Aug 25, 2020 10:05 pm

Re: Cnexion WEB SERVICE

Post by PGO »

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

 
       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.
User avatar
karinha
Posts: 7928
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Cnexion WEB SERVICE

Post by karinha »

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
leandro
Posts: 1728
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Has thanked: 24 times
Been thanked: 4 times
Contact:

Re: Cnexion WEB SERVICE

Post by leandro »

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



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

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
PGO
Posts: 17
Joined: Tue Aug 25, 2020 10:05 pm

Re: Cnexion WEB SERVICE

Post by PGO »

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


            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
Post Reply