Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Gestionar una conexión de cliente con Indy10 (https://www.clubdelphi.com/foros/showthread.php?t=49972)

xaguilars 05-11-2007 14:34:44

Gestionar una conexión de cliente con Indy10
 
Hola a todos, en clase estamos haciendo una práctica con Delphi 2006 en la que enviamos una petición HTTP a un servidor web por ejemplo con el comando GET. Toda la información de la petición está escrita en un TMemo (input) y la respuesta nos la tiene que escribir en otro TMemo (output).

Hemos usado el componente de Indy10 TIdTcpClient pero se nos cuelga la aplicación. Usamos el try {conectar y enviar peticion} finally {desconectar}
como se muestra aquí:

Código Delphi [-]
procedure TForm1.btGETClick(Sender: TObject);
var
  i:integer;
begin
  if edProtocol.Text='' then btInterprClick(Self); //separa las partes de la URL dada en un editbox, en editboxes
  Input1.Lines.Add('GET '+edPath.text+' HTTP/1.1'+EOL+'Host: '+edHost.Text+EOL); //EOL=#13#10
  //Conexión
  Output1.Lines.Clear;
  SckClient.Host:=edHost.Text;
  SckClient.Port:=Port;
  try 
    SckClient.Connect;
    If sckclient.Connected then showmessage ('Conectado!');
    for i := 0 to Input1.Lines.Count - 1 do
    begin
      SckCLient.IoHandler.Write(Input1.Lines[i]);
      Output1.Lines.Add(SckClient.IoHandler.Readln);
    end;
  finally
    SckClient.Disconnect;
  end;
end;

Parece que conectarse se conecta porque muestra el showmessage, también parece que envía la petición (Write) porque con F7 pasa a la línea siguiente... que es donde se cuelga (freeze) sin dar ningún error.

Alguien sabe como solucionarlo? Gracias ;)

poliburro 05-11-2007 15:38:11

si son peticiones a un webserver, yo les aconsejaría utilizar un cliente http (Yo me inclino por el componente WebBrouser), eso les va a ahorrar muchisimo trabajo.

El componente Webbrowser y el Indyhttp tienen implementados los métodos Get y post. Suerte

xaguilars 05-11-2007 16:44:08

Hola muchas gracias. Lo he probado pero no encuentro la manera de conectar con el servidor. Cuando hago Idhttp1.Connect, me sale una excepción: EIDHostRequired. He probado poniendo el host y el port en Idhttp1.iohandler.host y en Idhttp1.iohandler.port pero no me deja asignarles nada.
Lo que básicamente queremos es sacar por un tmemo la respuesta del servidor en texto plano, la cabecera html y todo el body que venga después.

Muxas gracias

poliburro 05-11-2007 16:53:46

más bien es

IdHttp1.Host = 'www.clubdelphi.com';
IdHttp1.Port = 80


La franja horaria es GMT +2. Ahora son las 08:31:00.

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