AWEB'S HTTP PARSER - PARSEUR HTTP

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 21 juin 2006 à 07:40
acrcorp Messages postés 96 Date d'inscription dimanche 16 février 2003 Statut Membre Dernière intervention 23 septembre 2007 - 26 juin 2006 à 19:44
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/38224-aweb-s-http-parser-parseur-http

acrcorp Messages postés 96 Date d'inscription dimanche 16 février 2003 Statut Membre Dernière intervention 23 septembre 2007
26 juin 2006 à 19:44
Oki merci ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 juin 2006 à 09:48
c'est pas le but de cette source, non...
ici, c'est une analyse, un découpage d'entêtes HTTP...
acrcorp Messages postés 96 Date d'inscription dimanche 16 février 2003 Statut Membre Dernière intervention 23 septembre 2007
26 juin 2006 à 09:12
Bonjour bonjour !!!

Hum, j'ai récupéré ta source mais je ne suis pas sur de bien comprendre ce qu'elle fait (il se passe rien quand je la lance comme ça) :(
Perso, je cherche le moyen de récupérer le code html des pages web dans lesquelles je me balade lorsque je surfe. C'est donc une sorte de sniffeur html que je recherche...
Ton source est il en capable de faire ça ?

Merci d'avance ;)
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
22 juin 2006 à 16:13
oui pardon
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 juin 2006 à 12:58
bonnes remarques

concernant le "Aussi pour la recherche de la méthode il faut prendre en compte le cas où il n' y a pas d' espace, cad retourner une chaine vide si nPos = 0."

If nPos > 0 Then
HTTPmethod = Left$ ( Request, nPos-1 )
End If

HTTPMethod se verra bien renvoyer une chaine vide si nPos = 0 ....
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
22 juin 2006 à 12:54
Je pense que les "nouveaux" objets du .NET parcourent le string requête 1 seule fois, caractère par caractère, pour remplir une structure au fur et à mesure qu'il tombe sur un vbcrlf. C'est le plus pragmatique, de faire 1 seule fonction et c'est très rapide comparé au split(). Si tu recadres ton code dans cette direction il faudra appeler les éléments par leur nom (cf. RFC 2616): par exemple
HTTPpage -> c'est l' URI, pas la page. Et le "Document" fait partie de l' URI.

En d' autres termes j'encourage à créer une structure (Private Type Requete....End Type)
puis faire appel à ses membres, même si on n' a besoin que d'une seule information. Dans le meilleur des cas, ce sera une classe... En fait, ça DOIT être une classe.

Aussi pour la recherche de la méthode il faut prendre en compte le cas où il n' y a pas d' espace, cad retourner une chaine vide si nPos = 0.

Dernière chose c'est pas une bonne idée de mixer les langues dans les commentaires et les noms de fonctions. Tout en français, ou tout en anglais.

bonne prog les amis
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
22 juin 2006 à 12:32
en meme temps ton code est destiné à être utilisé par d'autres, à titre perso ou en prod', vu que tu le distribues.
Leur donner quelquechose qui n'est pas optimisé alors qu'on te sert sur un plateau les ammeliorations, ce n'est pas vraiment dans l'esprit...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 juin 2006 à 14:31
ok sur le fait que tous les chemins peuvent mener à Rome...

je ne fait que t'indiquer un chemin plus rapide d'y parvenir...
à toi après d'en prendre note (ou pas) pour tes développements à venir.
Ahweb Messages postés 48 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 15 octobre 2007
21 juin 2006 à 14:02
La méthode est toujours envoyées et toutes les fonctions marchent.

Ce quie st bien en programmation c'est qu'il y a différentes façons de travailler, et plusieurs marchent. La tienne est plus pointue et plus optimisée que la mienne mais elles marchent toutes les deux ;)

Ne m'en demande pas trop, je ne suis pas programmeur pro ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 juin 2006 à 07:40
pas top coté perf... (surtout si on est destinés a venir jouer sur une appli temps reel, comme un serveur Web)

# Public Function HTTPmethod(ByVal Request As String) As String
# Dim RequestLines() As String
# Dim TempArray() As String
# RequestLines = Split(Request, vbCrLf)
# TempArray = Split(RequestLines(0), " ")
# HTTPmethod = TempArray(0)
# End Function

1 : tu ne fais aucune verification
2 : ByVal :d
3 : deux split inutiles

tu aurais pu simplement faire :

Public Function HTTPmethod(ByRef Request As String) As String
Dim nPos as long As String
nPos = InStr ( Request, " ")
If nPos > 0 Then
HTTPmethod = Left$ ( Request, nPos-1 )
End If
End Function

les autres fonctions souffrent des même problème...
Rejoignez-nous