Page 1 of 1

Cnexion WEB SERVICE

Posted: Tue Oct 13, 2020 5:48 pm
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

Re: Cnexion WEB SERVICE

Posted: Tue Oct 13, 2020 11:24 pm
by karinha
Holá, sin código, no és posible tener como ayudar. Post el código, porfa. Gracias, saludos.

Re: Cnexion WEB SERVICE

Posted: Tue Oct 13, 2020 11:51 pm
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.

Re: Cnexion WEB SERVICE

Posted: Wed Oct 14, 2020 2:07 am
by karinha

Re: Cnexion WEB SERVICE

Posted: Wed Oct 14, 2020 2:40 pm
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"])

 

Re: Cnexion WEB SERVICE

Posted: Thu Oct 15, 2020 5:46 pm
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