RÉCEPTION PAR HTTP/1.0 ET HTTP/1.1 AVEC TCLIENTSOCKET EN QUELQUES LIGNES

cs_koko Messages postés 654 Date d'inscription lundi 14 janvier 2002 Statut Membre Dernière intervention 20 février 2005 - 1 mars 2003 à 11:49
nicorenejaque Messages postés 8 Date d'inscription samedi 12 mars 2005 Statut Membre Dernière intervention 4 avril 2010 - 1 avril 2008 à 08:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/12381-reception-par-http-1-0-et-http-1-1-avec-tclientsocket-en-quelques-lignes

nicorenejaque Messages postés 8 Date d'inscription samedi 12 mars 2005 Statut Membre Dernière intervention 4 avril 2010
1 avril 2008 à 08:10
Bonjour, chez moi le script ne marche pas et génère l'erreur 11004. A quoi cela peut-il être dû ? Je précise que la page à visiter possède des arguments en php.
Merçi d'avance pour vos réponses.
cs_MaXoR Messages postés 38 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 18 décembre 2005
7 janv. 2008 à 18:48
hey je traite buffer comment car je veux downloader un exe dun serveur http pour faire des mise a jours
cs_ekinoxjp Messages postés 43 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 18 septembre 2011
30 janv. 2006 à 22:28
J'ai remarqué que le programme mettais du temps avant de m'afficher le résultat. C'est louche.

J'ai vu qu'en fait le programme ne fermait pas le socket après la réception des données. Donc on doit attendre le Timeout du serveur http (en moyenne 30 sec) avant d'avoir le résultat. Pour simuler le comportement d'un navigateur Internet (dites moi si je dis une bêtise ^^), il faudrait rajouter un Socket.Close; après la réception de données. Comme ci dessous:

// Quand le serveur envoie des données on les copie dans buffer:
Procedure TClientSocket_HTTP.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
i1, i2 :integer;
begin
i1 := Length(buffer);
i2 := socket.ReceiveLength;
Setlength(buffer, i1+i2);
socket.ReceiveBuf(Buffer[i1], i2);
// Fin de la réception, on ferme.
Socket.Close;
end;
Vin-s Messages postés 9 Date d'inscription jeudi 4 octobre 2001 Statut Membre Dernière intervention 9 mars 2004
1 mars 2003 à 22:56
koko > gros malin ! ;) Quel est l'erreur ? (le numero).
D'autre part, il ne faux pas utiliser ce source pour se connecter
à n'importe quel server http ! en effet, ce code ne respecte pas
1% de la norme imposé par les RFC...

Par contre, Si votre appli se connecte toujours au même serveur
(pour afficher des news pas exemple), alors, démerdez vous pour
que la ligne de commande fonctionne sur CE serveur et évitez
ainsi d'alourdir votre appli avec des gros composants genre indy.
C'est toujours plus sympas d'être moins dépendant du code des
autre !
Vin-s
cs_koko Messages postés 654 Date d'inscription lundi 14 janvier 2002 Statut Membre Dernière intervention 20 février 2005
1 mars 2003 à 11:49
chez moi certaine page ne veulent pas s'afficher et j'ai une erreur :( cela peut etre du a quoi ?
Rejoignez-nous