httpRequete

Le
thierry.jacquart
Bonjour,

pour recuperer des données avec des requetes Http (depuis hattrick.org
pour ceux qui connaissent)
j'utilise HttpRequete et un objet winhttp 5.1.

Je ne comprends pas pourquoi 2 requetes identiques mettent des temps
differents
- httpRequete 18 secondes
- winhttp 2 secondes
?!?!

la premiere requete recupere un fichier xml pour connaitre le serveur
dispo
la deuxieme recupere un cookie de session pour rechercher des données
*personnelles*.

1/ quelqu'un a t il déjà constaté une telle difference de perf entre
ces 2 methodes
2/ j'utilise le winhttp car j'ai pas trouvé comment recupéré un cookie
de session avec WD => c'est possible ?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel
Le #14603421
a écrit :
Bonjour,

pour recuperer des données avec des requetes Http (depuis hattrick.org
pour ceux qui connaissent)
j'utilise HttpRequete et un objet winhttp 5.1.

Je ne comprends pas pourquoi 2 requetes identiques mettent des temps
differents
- httpRequete 18 secondes
- winhttp 2 secondes
?!?!

la premiere requete recupere un fichier xml pour connaitre le serveur
dispo
la deuxieme recupere un cookie de session pour rechercher des données
*personnelles*.

1/ quelqu'un a t il déjà constaté une telle difference de perf entre
ces 2 methodes
2/ j'utilise le winhttp car j'ai pas trouvé comment recupéré un cookie
de session avec WD => c'est possible ?




Essaie de passer l'adresse IP du site pour voir si le problème persiste.

Sinon utilise un sniffer HTTP pour voir ce qui est envoyé avec
HTTPrequete et Winhttp. Et essaie de reproduire le même header avec
httprequete.

J'ai déjà eu des problèmes car l'entête faite par httprequete était
inexacte voire fausse.

Par exemple toutes les versions inférieures à Windev 9 envoient une
taille de message (Content-Length) incorrecte ce qui fait que suivant le
serveur en face on a :
- aucun incident
- un fort ralentissement
- un fort ralentissement, avec souvent un échec de HTTPrequete
- un échec de HTTPrequete



--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
thierry.jacquart
Le #14603231
ouaip effectivement :

- winhhttp claque "Content-Length: 0"
et
WD Content-Length: 4

mais si j'essaie de forcer dans les paramètres de httprequete le
content-length, j'en envoie 2 : un à 0 et un a 4 ?
manque de bol, le mien est en premier et comme j'imagine que le
serveur garde le dernier s'il y en a plusieurs...

comment tu fais pour forcer les header ?


Par exemple toutes les versions inférieures à Windev 9 envoient une
taille de message (Content-Length) incorrecte ce qui fait que suivant le
serveur en face on a :
- aucun incident
- un fort ralentissement
- un fort ralentissement, avec souvent un échec de HTTPrequete
- un échec de HTTPrequete

--
suivre ce lien pour répondre:http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)


Daniel
Le #14603201
a écrit :
ouaip effectivement :

- winhhttp claque "Content-Length: 0"
et
WD Content-Length: 4

mais si j'essaie de forcer dans les paramètres de httprequete le
content-length, j'en envoie 2 : un à 0 et un a 4 ?
manque de bol, le mien est en premier et comme j'imagine que le
serveur garde le dernier s'il y en a plusieurs...

comment tu fais pour forcer les header ?

Par exemple toutes les versions inférieures à Windev 9 envoient une
taille de message (Content-Length) incorrecte ce qui fait que suivant le
serveur en face on a :
- aucun incident
- un fort ralentissement
- un fort ralentissement, avec souvent un échec de HTTPrequete
- un échec de HTTPrequete

--
suivre ce lien pour répondre:http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)







Pas possible de modifier Content-length :-( avec httprequete
Car tu vas toujours avoir le Content-length calculé par httprequete.


Si tu veux faire un header vraiment maison, le seul moyen est de passer
par les sockets.

Ce n'est pas difficile à faire, mais dans ce cas il vaut mieux oublier
la gestion de https :-(

Dans ton cas essaie de modifier le content-length envoyer par Winhttp si
c'est possible, en mettant comme valeur 4.


Sinon voici un exemple de code que tu peux adapter.

cNomSocket est une chaine = "www.xxx.aaa"
p_site est une chaine = "/emplacement/script"

SI SocketConnecte(cNomSocket,80,p_site) ALORS
SI SocketChangeModeTransmission(cNomSocket,SocketSansMarqueurFin) ALORS

//faire attention et respecter la casse et les espaces
// Ecrire le header attendu
cDemande="GET "+psite+" HTTP/1.1+RC
cDemande+="Host:"+p_site+" "+RC
cDemande+="User-Agent: MOZILLA Compatible"+RC
cDemande+="Content-Length: "+0+RC
cDemande+="Keep-Alive: 300"+RC
cDemande+="Connection: keep-alive"+RC

SI SocketEcrit(cNomSocket,cDemande+RC) ALORS
cMAJ est une chaîne=""
cRecup est une chaîne
cRecup = SocketLit(cNomSocket,Faux,3000)
....

// Faire une boucle avec socketlit tantque crecup<>"" pour récupérer le
buffer, et fermer la socket ensuite







--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Publicité
Poster une réponse
Anonyme