FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Cnexion WEB SERVICE
Posts: 17
Joined: Tue Aug 25, 2020 10:05 PM
Cnexion WEB SERVICE
Posted: Tue Oct 13, 2020 05: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 (fw): Select all Collapse
{
聽 "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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Cnexion WEB SERVICE
Posted: 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
Posts: 17
Joined: Tue Aug 25, 2020 10:05 PM
Re: Cnexion WEB SERVICE
Posted: Tue Oct 13, 2020 11:51 PM
He creado una clase la cual llamo oApi

donde

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


El c贸digo donde llamo a las etiquetas es

Code (fw): Select all Collapse
聽
聽聽 聽 聽 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.
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Cnexion WEB SERVICE
Posted: Wed Oct 14, 2020 02:07 AM
Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Cnexion WEB SERVICE
Posted: Wed Oct 14, 2020 02: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 (fw): Select all Collapse
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 25.01 ] [ xHarbour 64 bits) ]
Posts: 17
Joined: Tue Aug 25, 2020 10:05 PM
Re: Cnexion WEB SERVICE
Posted: Thu Oct 15, 2020 05: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 (fw): Select all Collapse
聽 聽 聽 聽 聽 聽 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

Continue the discussion