function envia_json(user,pass,cJsoRes,vDatCar)
local ahashImpuestos := ahashEncabezado := hash()
local mImpuestos := {},doc ,Ctext ,cJson, response
local cBas64 := hb_base64encode(user+":"+pass,len(user+":"+pass))
try
// ejemplo reducido de json
ahashImpuestos["Nvimp_desc"] := ALLTRIM(vDatCar[1])
ahashImpuestos["Nvimp_cdia"] := ALLTRIM(vDatCar[2])
ahashImpuestos["Nvimp_porc"] := ALLTRIM(vDatCar[3])
ahashImpuestos["Nvimp_valo"] := ALLTRIM(vDatCar[4])
ahashImpuestos["Nvimp_base"] := ALLTRIM(vDatCar[5])
ahashImpuestos["Nvimp_oper"] := "S"
AADD(mImpuestos,ahashImpuestos)
ahashEncabezado["lImpuestos"] := mImpuestos
cJson := hb_jsonEncode(ahashEncabezado,.T.)
doc := CreateObject( "MSXML2.DOMDocument" )
ohttp := CreateObject("MSXML2.XMLHTTP" )
ohttp:Open( "POST" ,"
http://proveedor.com.co/api/facfacturas",.F.)
oHttp:SetRequestHeader("Host", "localhost")
oHttp:SetRequestHeader("cache-control", "no-cache")
oHttp:SetRequestHeader("Connection", "Keep-Alive")
ohttp:SetRequestHeader("content-type", "application/json" )
ohttp:SetRequestHeader("Authorization", "Basic "+cBas64 )
Ctext:= cJson
TRY
ohttp:Send( cText )
CATCH
alerta("No Se Pudo Enviar Documento JSON","Intente Nuevamente")
END
response := ohttp:responseText
//Memowrit("RESPUESTA.TXT",Response)
cJsoRes := response
return