FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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; |
#2
|
||||
|
||||
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. |
#3
|
||||
|
||||
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 |
#4
|
||||
|
||||
Prueba incluyendo este header dentro de tu petición:
Código:
Connection: Keep-Alive Código PHP:
|
#5
|
||||
|
||||
Hola,
Domingo, ¿significa eso que estoy equivocado? Di lo que sea ya. |
#6
|
||||
|
||||
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. |
#7
|
||||
|
||||
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 |
|
|
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 |
|