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

{
  "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: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

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

 
       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: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Cnexion WEB SERVICE

Post by karinha »

João Santos - São Paulo - Brasil
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
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


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

 
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
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

            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