Código: Seleccionar todo
procedure TForm1.Button10Click(Sender: TObject);
var nodo: IXMLNode;
input, sal: TStringList;
comando: string;
begin
XMLDoc.FileName := 'D:\Proyectos\Varios\post web\DescargaSatWS\resp_descarga.xml';
//La linea de arriba sería el response obtenido del webservice, el xml que regresa, donde está la cadena en base64
XMLDoc.Active := true;
nodo := XMLDoc.DocumentElement;
nodo := nodo.ChildNodes.FindNode('Body');
nodo := nodo.ChildNodes.First;
nodo := nodo.ChildNodes.First;
//Con todo el bloque de arriba cargo el xml en memoria y busco el nodo donde está la cadena b64, que sería el nodo "Paquete"
input := TStringList.Create;
sal := TStringList.Create;
input.Text := nodo.Text;
//En la linea de arriba obtengo el string de la cadena b64
StrToStringList(input.Text, sal, 64);
//En la linea de arriba hay que dividir la cadena b64 en partes de 64 caracteres, para que funcione con openssl
sal.SaveToFile('D:\Proyectos\Varios\post web\DescargaSatWS\paquete.b64.txt');
//En la linea de arriba guardamos la cadena b64 ya dividida en partes de 64 caracteres, para decodificarla con openssl
sal.Free;
input.Free;
XMLDoc.Active := false;
comando := 'openssl base64 -d -in "D:\Proyectos\Varios\post web\DescargaSatWS\paquete.b64.txt" -out ' +
'"D:\Proyectos\Varios\post web\DescargaSatWS\paquete.b64.zip"';
// Las lineas de arriba serían el comando de openssl para decodificar y obtener el zip
comando := CmdExec(comando);
//En la linea de arriba, ejecuto el comando
ShowMessage(comando);
end;