Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-03-2015
frankizzio frankizzio is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 10
Poder: 0
frankizzio Va por buen camino
Convertir String - TDynArray - Archivo ZIP

Hola,
Estoy realizando un client web service pero me estoy estancando en lo siguiente, ya genere la conexión con el servidor y este me envía un XML de respuesta, que es el siguiente

Código:
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="ht tp: / /sche mas.xmls oap.or g/soap/envelope/">
<S:Body>
<ns2:sendBillResponse xmlns:ns2="h t t p : //serv ice . co m"><applicationResponse>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</applicationResponse>
</ns2:sendBillResponse>
</S:Body>
</S:Envelope>
El xml muestra una etiqueta llamada aplicationresponse la cual tiene una cadena que viene a ser un arreglo de bytes (TByteDynArray) la cual contiene un archivo zipeado, este archivo zip contiene un archivo xml con la constancia de recepción del web service.

Mi problema se da cuando quiero convertir el archivo zip, siempre que lo abro me aparece el mensaje de error "El archivo tiene un formato desconocido o está dañado", El proceso que realizo es el siguiente

En el AfterExecute extraigo la respuesta

Código Delphi [-]
procedure TForm1.HTTPRIO1AfterExecute(const MethodName: string;
  SOAPResponse: TStream);
begin
  ConverZipFile(StreamToString(SOAPResponse));
end;
Luego utilizando los siguientes procesos realizó las conversiones hasta crear el archivo zip

Código Delphi [-]
procedure ConverZipFile(XML: String);
    var
  Doc     : IXMLDocument;
  Elemento: IXMLNode;
  ByteB   : TByteDynArray;
begin
  Doc := LoadXMLData(XML);
  Elemento := Doc.DocumentElement.ChildNodes.FindNode('S:Body');
  Elemento := Elemento.ChildNodes.Get(0);
  Elemento := Elemento.ChildNodes.Get(0);
  ByteB:=StringToByteArray2(VarToStr(Elemento.NodeValue));
  ByteArrayToFIle(ByteB,'D:\E-Billing\demo.ZIP');
end;


function StringToByteArray2(Str: AnsiString): TByteDynArray;
var
  MSTream: TMemoryStream;
  pTemp: pointer;
begin
  MStream := TMemoryStream.Create;
  MStream.Write(str,length(str));
  MStream.Position := 0;

  SetLength(Result, MStream.Size);
  pTemp := @Result[0];
  MStream.Position := 0;
  MStream.Read(pTemp^, MStream.Size);

  MStream.Free;
end;



procedure ByteArrayToFIle( ByteArray : TByteDynArray;
                           FileName : string );
var Count : integer;
    F : FIle of Byte;
    pTemp : Pointer;
begin
  AssignFile( F, FileName );
  Rewrite(F);
  try
    Count := Length( ByteArray );
    pTemp := @ByteArray[0];
    BlockWrite(F, pTemp^, Count );
  finally
    CloseFile( F );
  end;
end;

La documentación del web service especifica que la respuesta es un arreglo de bytes de base64,
Espero me puedan ayudar.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
convertir string a double!! negrokau Varios 6 25-05-2011 11:44:35
convertir un date a string airam C++ Builder 2 25-07-2008 18:58:00
convertir string jsanchez Varios 3 31-07-2006 22:23:19
Convertir un String en un método. OscarG OOP 5 19-12-2005 12:52:35
Convertir Word a String sierraja Varios 3 22-06-2005 15:18:44


La franja horaria es GMT +2. Ahora son las 21:18:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi