PDA

Ver la Versión Completa : Enviar archivo XML por http


noob
12-03-2009, 23:15:51
Hola, me gustaría saber cómo puedo enviar un documento XML mediante http.

Muchas gracias.

dec
12-03-2009, 23:40:03
Hola,

¿Podrías ser un poco más descriptivo?

noob
13-03-2009, 08:21:44
Sí, el caso es que me han aconsejado que para enviar información a un servidor web es mejor que utilice un documento XML con los campos que quiera enviar y que lo haga por http, actualmente estoy haciéndolo mediante sockets por TCP y mediante campos de texto separados por un caracter especial.

Es decir: <Campo1><CaracterEspecial><Campo2><CaracterEspecial><Campo3>

Y me gustaría saber cómo llevar a cabo la opción de XML + http

Saludos.

dec
13-03-2009, 15:22:27
Hola,

Inicia un nuevo proyecto y añade en el formulario principal un "TMemo", un "TButton" y un "TIdHttp". Con el siguiente código estarías enviando un archivo mediante una petición HTTP POST, algo que pone muy sencillo el componente "IdHttp" y alguna clase auxiliar, como verás:


uses
IdMultipartFormData;

procedure TForm1.Button1Click(Sender: TObject);
var
response: TStringStream;
postData: TIdMultipartFormDataStream;
begin
response := TStringStream.Create(EmptyStr);
postData := TIdMultiPartFormDataStream.Create();
try
postData.AddFile('file', 'C:\archive.xml', 'application/octet-stream');
try
IdHTTP1.Post('http://localhost/upload.php', postData, response);
Memo1.Text := response.DataString;
except
on E: Exception do begin
ShowMessage(E.Message);
end;
end;
finally
response.Free();
postData.Free();
end;
end;


En el caso de que quien recibiese la petición fuera un "script" PHP, dispondrías de la información del archivo en la variable $_FILES. En el caso de que fuera un "script" escrito en otro lenguaje, tendrás que investigar, pero, por ahí deben ir los tiros.

PD. El código de arriba se basa en este otro (http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.thirdpartytools.general/2007-02/msg00637.html), que, encontré (junto a otros resultados) buscando por ahí. ;)

noob
13-03-2009, 15:24:04
Muchas gracias, voy a probar y te cuento.

Saludos.