Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Enviar archivo XML por http (https://www.clubdelphi.com/foros/showthread.php?t=64032)

noob 12-03-2009 23:15:51

Enviar archivo XML por http
 
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:

Código Delphi [-]
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, 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.


La franja horaria es GMT +2. Ahora son las 10:08:04.

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