Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-01-2008
Avatar de Sr_Sombrero
Sr_Sombrero Sr_Sombrero is offline
Miembro
 
Registrado: may 2003
Posts: 49
Poder: 0
Sr_Sombrero Va por buen camino
Peticiones Get sucesivas

Hola! Estoy haciendo un programa que envía una lista a una web mediante Get aunque tal vez sería mejor usar POST, pero como la web la hace otro estoy tratando de ver si puedo hacer que funcione con GET antes de pedir que la cambie a método POST.

¿Es posible enviar varios GET sucesivos sin tener que reconectar? Me pasa que conecto, envio el GET con sendtext y si quiero enviar otro GET sin cerrar e iniciar una nueva conexión me sale error.

Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Button1.Caption = 'Conectar' then
    ClientSocket1.Active:= True;
  else
  if Button1.Caption = 'Desconectar' then
    ClientSocket1.Active:= False;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Button1.Caption:= 'Desconectar';
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Button1.Caption:= 'Conectar';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ClientSocket1.Socket.SendText(
  'GET http://lalala.com/add.php?lista=' + edit1.text + #13#10 +
  'HTTP/1.0' + #13#10 +
  'Accept: */*' + #13#10 +
  'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)' + #13#10 +
  'Host: ' + ClientSocket1.Host + #13#10 +
  'Pragma: no-cache'+#13#10#13#10);
end;
Responder Con Cita
  #2  
Antiguo 23-01-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Que me corrija alguien si estoy equivocado. Lo que ocurre es que una conexión HTTP no es "persistente". Es decir, se trata de conectar y enviar los datos que sean menester, volver a conectar y volver a enviar más datos. No hay forma de decirle al Servidor, hey, espera, no "desconectes" todavía que voy a enviarte más datos. Porque estos se procesan "de una vez", o no se procesan.

No se mantiene una comunicación, propiamente dicha, sino que tú envias una petición, y el servidor retorna una respuesta. Y ahí acaba todo. Si quieres volver a vértelas con el servidor has de enviar otra petición, para la que obtendrás una nueva respuesta. Habría que ver porqué te planteas "varias peticiones" a la vez. El asunto, probablemente, deba enforcarse de otra forma.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 23-01-2008
Avatar de Sr_Sombrero
Sr_Sombrero Sr_Sombrero is offline
Miembro
 
Registrado: may 2003
Posts: 49
Poder: 0
Sr_Sombrero Va por buen camino
Gracias dec, esa era justo mi duda.

Lo de enviar varias peticiones juntas, en vez de conectar y reconectar era para aliviar la carga del servidor. Por lo visto tendré que probar si se pone lento o enfocarlo de otra manera.

Saludos
Responder Con Cita
  #4  
Antiguo 23-01-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Prueba incluyendo este header dentro de tu petición:
Código:
Connection: Keep-Alive
Algo así:
Código PHP:
ClientSocket1.Socket.SendText(
  
'GET [url]http://lalala.com/add.php?lista=[/url]' edit1.text #13#10 +
  
'HTTP/1.0' #13#10 +
  
'Accept: */*' #13#10 +
  
'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)' #13#10 +
  
'Host: ' ClientSocket1.Host #13#10 +
  
'Connection: Keep-Alive' #13#10 +
  
'Pragma: no-cache'+#13#10#13#10); 
Responder Con Cita
  #5  
Antiguo 23-01-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Domingo, ¿significa eso que estoy equivocado? Di lo que sea ya.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 23-01-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Si no estoy equivocado en la versión 1.1 del protocolo http se puede mantener la conexión abierta usando "keep-alive", otra cosa es que tanto el cliente como el servidor soporten esta característica y estén dispuestos a utilizarla. Un servidor esta en todo su derecho de responder a un "Connection: keep-alive" con un "Connection: Close", y se acabo lo que se daba

Pero metiéndonos ya en estos líos, yo le sugiero al Sr. Sombrero que se deje de sockets y utilice Indy, Wininet o alguna cosa similar, porque ellos mismos se encargaran de manejar la conexión y "mantenerla viva" si así se lo indicas, eso si, siempre que el servidor este de acuerdo.
Responder Con Cita
  #7  
Antiguo 24-01-2008
Avatar de Sr_Sombrero
Sr_Sombrero Sr_Sombrero is offline
Miembro
 
Registrado: may 2003
Posts: 49
Poder: 0
Sr_Sombrero Va por buen camino
Gracias!

Probé con 'Connection: Keep-Alive' y me funciona. Lo de aprender a usar las INDY es una cuenta pendiente pero para este proyecto me alcanza con un socket comunacho.

Ante la primer respuesta pasamos a método POST, aunque no hacía falta, pero me vino bien porque ahora ya se usar tanto POST como GET.

Saludos
Responder Con Cita
Respuesta



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
Peticiones HTTP - Componente del Builder C++ 8051 C++ Builder 2 01-02-2008 17:10:56
Problema con restas sucesivas gerupc Varios 8 09-08-2007 01:19:37
Problema con producto a través de sumas sucesivas. gerupc Varios 5 07-08-2007 22:12:44
Servir Webs y peticiones de aplicación cliente Val Internet 6 08-03-2007 11:24:06
Ajax.class.js - Sencilla forma de hacer peticiones HTTP en segundo plano dec PHP 10 11-01-2007 04:50:49


La franja horaria es GMT +2. Ahora son las 01:14:24.


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