begin process at 2012 02 13 06:11:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > REQUETE HTTP GET / POST

REQUETE HTTP GET / POST


 Information sur la source

Note :
9,5 / 10 - par 10 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Source .NET ( DotNet ) Classé sous :requete, http, get, post, request Niveau :Débutant Date de création :22/02/2006 Date de mise à jour :19/07/2007 01:10:26 Vu :43 049

Auteur : hvb

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (73)
Ajouter un commentaire et/ou une note


 Description

Suite à une question dans le forum qui m'a poussé à ecrire un code que je pensais avoir déja poster ici, je me permet d'ajouter ce simple petit code.
J'avais effectivement deja poster la source "requete http via proxy, recuperer la source d'une page html" mais celle ci etait plus destiné à montrer l'interet du proxy et ne s'arretait que sur la methode GET, et le changement de nom serait devenu compliqué, bref, voila mon explication à une eventuelle critique concernant un doublon.
Cette fois ci les deux methodes les plus courantes (POST et GET) sont presentées.
Update : Gestion des authentification par .htaccess

Update 2 : Ajout de la gestion des cookies (pourtant indispensable, où était-elle??), ainsi que des proxy. Les arguments optionels attendus par les deux méthodes devienent nombreux, du fait que celles ci sont extraites d'une classe me simplifiant l'utilisations des requêtes HTTP, dans laquelle j'ai défini de nombreuses surcharges de ces méthodes.
J'hesite à mettre cette classe à la place des deux simple méthodes, ce qui augmenterais considérablement le code censé être très simple.

Source

  • Private Function Get_request(ByVal url As String, Optional ByVal cookies As String = "", Optional ByVal proxy As String = Nothing, Optional ByVal proxyport As Integer = Nothing, Optional ByVal timeout As Integer = 30000, Optional ByVal login As String = "", Optional ByVal pass As String = "") As String
  • Dim reader As IO.StreamReader 'on crée un objet streamreader
  • Try
  • Dim hwebrequest As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(url) 'on crée la requete web
  • hwebrequest.Timeout = timeout
  • If proxy <> "" Then
  • Dim hproxy As WebProxy
  • hproxy = New WebProxy(proxy, proxyport)
  • WebRequest.DefaultWebProxy = hproxy
  • End If
  • If login <> "" Then
  • Dim hcredential As New System.Net.NetworkCredential(login, pass)
  • hwebrequest.Credentials = hcredential
  • End If
  • If cookies <> "" Then
  • hwebrequest.CookieContainer = New CookieContainer
  • hwebrequest.CookieContainer.SetCookies(New Uri(url.Substring(0, url.IndexOf("/", 8))), cookies)
  • End If
  • Dim hwebresponse As System.Net.HttpWebResponse = hwebrequest.GetResponse 'on crée un objet de reponse a notre requete
  • reader = New IO.StreamReader(hwebresponse.GetResponseStream) 'on redefini notre streamreader avec la reponse à la requete en argument
  • Dim res As String = ""
  • res = reader.ReadToEnd() 'on renvoie l'ensemble du resultat
  • reader.Close() 'on ferme l'objet
  • hwebresponse.Close()
  • Return res
  • Catch ex As Exception
  • Return ex.ToString
  • End Try
  • End Function
  • Private Function Post_request(ByVal url As String, ByVal data As String, Optional ByVal cookies As String = "", Optional ByVal proxy As String = Nothing, Optional ByVal proxyport As Integer = Nothing, Optional ByVal timeout As Integer = 30000, Optional ByVal login As String = "", Optional ByVal pass As String = "") As String
  • Dim reader As IO.StreamReader
  • Dim writer As IO.StreamWriter
  • Dim res As String = ""
  • Try
  • Dim hwebrequest As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(url) ' on crée la requete web à partir de l'url
  • If proxy <> "" Then
  • Dim hproxy As WebProxy
  • hproxy = New WebProxy(proxy, proxyport)
  • WebRequest.DefaultWebProxy = hproxy
  • End If
  • If login <> "" Then
  • Dim hcredential As New System.Net.NetworkCredential(login, pass)
  • hwebrequest.Credentials = hcredential
  • End If
  • If cookies <> "" Then
  • hwebrequest.CookieContainer = New CookieContainer
  • hwebrequest.CookieContainer.SetCookies(New Uri(url.Substring(0, url.IndexOf("/", 8))), cookies)
  • End If
  • hwebrequest.Method = "POST" 'on defini la methode à utiliser
  • hwebrequest.ContentType = "application/x-www-form-urlencoded" 'on defini le type de contenu de la requete
  • hwebrequest.ContentLength = data.Length 'on defini la taille des données à envoyé
  • writer = New IO.StreamWriter(hwebrequest.GetRequestStream) 'on crée un objet streamwriter qui va nous permettre d'envoyer nos données
  • writer.Write(data) 'on ecrit les données
  • writer.Close() 'on ferme l'objet streamwriter
  • Dim hwebresponse As System.Net.HttpWebResponse = hwebrequest.GetResponse 'on crée un objet de reponse a notre requete
  • reader = New IO.StreamReader(hwebresponse.GetResponseStream) 'on redefini notre streamreader avec la reponse à la requete en argument
  • res = reader.ReadToEnd() 'on renvoie l'ensemble du resultat
  • reader.Close() 'on ferme l'objet
  • Return res
  • Catch ex As Exception
  • Return ex.Message.ToString
  • End Try
  • End Function
    Private Function Get_request(ByVal url As String, Optional ByVal cookies As String = "", Optional ByVal proxy As String = Nothing, Optional ByVal proxyport As Integer = Nothing, Optional ByVal timeout As Integer = 30000, Optional ByVal login As String = "", Optional ByVal pass As String = "") As String
        Dim reader As IO.StreamReader 'on crée un objet streamreader 
        Try
            Dim hwebrequest As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(url) 'on crée la requete web 
            hwebrequest.Timeout = timeout
            If proxy <> "" Then
                Dim hproxy As WebProxy
                hproxy = New WebProxy(proxy, proxyport)
                WebRequest.DefaultWebProxy = hproxy
            End If
            If login <> "" Then
                Dim hcredential As New System.Net.NetworkCredential(login, pass)
                hwebrequest.Credentials = hcredential
            End If
            If cookies <> "" Then
                hwebrequest.CookieContainer = New CookieContainer
                hwebrequest.CookieContainer.SetCookies(New Uri(url.Substring(0, url.IndexOf("/", 8))), cookies)
            End If
            Dim hwebresponse As System.Net.HttpWebResponse = hwebrequest.GetResponse 'on crée un objet de reponse a notre requete 
            reader = New IO.StreamReader(hwebresponse.GetResponseStream) 'on redefini notre streamreader avec la reponse à la requete en argument 
            Dim res As String = ""
            res = reader.ReadToEnd() 'on renvoie l'ensemble du resultat 
            reader.Close() 'on ferme l'objet 
            hwebresponse.Close()
            Return res
        Catch ex As Exception
            Return ex.ToString
        End Try
    End Function

    Private Function Post_request(ByVal url As String, ByVal data As String, Optional ByVal cookies As String = "", Optional ByVal proxy As String = Nothing, Optional ByVal proxyport As Integer = Nothing, Optional ByVal timeout As Integer = 30000, Optional ByVal login As String = "", Optional ByVal pass As String = "") As String
        Dim reader As IO.StreamReader
        Dim writer As IO.StreamWriter
        Dim res As String = ""
        Try
            Dim hwebrequest As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(url) ' on crée la requete web à partir de l'url
            If proxy <> "" Then
                Dim hproxy As WebProxy
                hproxy = New WebProxy(proxy, proxyport)
                WebRequest.DefaultWebProxy = hproxy
            End If
            If login <> "" Then
                Dim hcredential As New System.Net.NetworkCredential(login, pass)
                hwebrequest.Credentials = hcredential
            End If
            If cookies <> "" Then
                hwebrequest.CookieContainer = New CookieContainer
                hwebrequest.CookieContainer.SetCookies(New Uri(url.Substring(0, url.IndexOf("/", 8))), cookies)
            End If
            hwebrequest.Method = "POST" 'on defini la methode à utiliser
            hwebrequest.ContentType = "application/x-www-form-urlencoded" 'on defini le type de contenu de la requete
            hwebrequest.ContentLength = data.Length 'on defini la taille des données à envoyé
            writer = New IO.StreamWriter(hwebrequest.GetRequestStream) 'on crée un objet streamwriter qui va nous permettre d'envoyer nos données
            writer.Write(data) 'on ecrit les données
            writer.Close() 'on ferme l'objet streamwriter
            Dim hwebresponse As System.Net.HttpWebResponse = hwebrequest.GetResponse 'on crée un objet de reponse a notre requete 
            reader = New IO.StreamReader(hwebresponse.GetResponseStream) 'on redefini notre streamreader avec la reponse à la requete en argument 
            res = reader.ReadToEnd() 'on renvoie l'ensemble du resultat 
            reader.Close() 'on ferme l'objet 
            Return res
        Catch ex As Exception
            Return ex.Message.ToString
        End Try
    End Function

 Conclusion

ammeliorations? 'suis preneur.


 Historique

13 mars 2006 01:25:33 :
j'avais oublié d'enlever des arguments non utilisés dans la fonction get...
11 février 2007 16:38:11 :
Merci à NeverDie pour l'information concernant l'authentification, qui me semblait optionnel à l'epoque, mais qui m'est aujourd'hui indispensable pour mon projet professionel. ^^
19 juillet 2007 01:10:27 :
Ajout de la gestion des cookies, ainsi que des proxy.

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) FOND DE FEUILLE ANIMÉ : DÉGRADÉ MOUVANT POUR ABOUT OU SPLASH...
Source avec Zip Source avec une capture Source .NET (Dotnet) FONT VIEWER : VISIONNEUSE DE POLICES SYSTEMES.
Source avec Zip Source avec une capture Source .NET (Dotnet) HBSNAPSHOTERV3.0 : GESTIONNAIRE DE CAPTURES D'ÉCRAN
Source avec Zip Source avec une capture Source .NET (Dotnet) JEU : PICROSS OU "PUZZLE JAPONAIS"
Source avec Zip Source .NET (Dotnet) [.NET2] COMPRESSION/DÉCOMPRESSION GZIP DE FICHIER GRÂCE À IO...

 Sources de la même categorie

Source avec Zip Source avec une capture GESTIONNAIRE DE TÉLÉCHARGEMENT, AVEC REPRISE ET MULTITHREADI... par Madx23
Source avec Zip Source avec une capture CONVERTIR DU TEXTE RTF EN CODE HTML ET VICE-VERSA par vicosta
Source avec Zip Source avec une capture DICTIONAIRE TEXT/AUDIO/VISUELLE ANGLAIS AVEC WEBBROWSER CONT... par majnounmajda
Source avec Zip Source .NET (Dotnet) NSLOOKUP EN VB.NET OU COMMENT FAIRE UNE REQÛETE DNS EN PRÉCI... par ShareVB
Source avec Zip Source avec une capture MINI SEVEUR HTTP AVEC INTERFACE GRAPHIQUE ET IMPLÉMENTATIONS... par lemout

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) UPLOAD/ DOWNLOAD FICHIER XML EN HTTP NET COMPACT FRAMEWORK... par angelus101
Source avec Zip Source avec une capture EXECUTEUR DE REQUETE SQL (ORIENTÉ ORACLE) par denpx
Source avec Zip Source avec une capture Source .NET (Dotnet) [VB 8][.NET 2]APPELER UN FICHIER DISTANT AVEC LES MÉTHODES P... par FREMYCOMPANY
Source .NET (Dotnet) ENVOI DE FICHIER PAR UNE REQUÊTE POST EN MULTIPART/FORM-DATA... par Kevin.Ory
Source avec Zip Source avec une capture CONNEXION SUR UN SITE TOUTES LES X SECONDES AVEC GET OU POST... par papipsycho

Commentaires et avis

Commentaire de OneHacker le 23/02/2006 11:12:26

Ca a l'air impeccable, pas de problème !

Je te met 10/10 !
Bonne continuation !

Redman

Commentaire de Lucyberad le 12/03/2006 14:32:47

que dire de plus, c'est concis, complet, limpide:
si je vais dire 10/10 (au moins)

Commentaire de nquere le 21/03/2006 14:27:10

Effectivement c'est rès bien détaillé. Mais j'ai une erreur (pas de ton code, je te rassure il fonctionne très bien...)

Mon code est celui ci:
        Dim reader As IO.StreamReader
        Dim writer As IO.StreamWriter
        Try
            Dim hwebrequest As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(url) ' on crée la requete web à partir de l'url

            hwebrequest.Method = "POST" 'on defini la methode à utiliser

            hwebrequest.ContentType = "multipart/form-data" 'on defini le type de contenu de la requete

            hwebrequest.ContentLength = Data.Length 'on defini la taille des données à envoyé

            writer = New IO.StreamWriter(hwebrequest.GetRequestStream) 'on crée un objet streamwriter qui va nous permettre d'envoyer nos données
            writer.Write(Data) 'on ecrit les données
            writer.Close() 'on ferme l'objet streamwriter

            Dim hwebresponse As System.Net.HttpWebResponse = hwebrequest.GetResponse 'on crée un objet de reponse a notre requete

            reader = New IO.StreamReader(hwebresponse.GetResponseStream) 'on redefini notre streamreader avec la reponse à la requete en argument

            txtResult.Text = reader.ReadToEnd() 'on renvoie l'ensemble du resultat
            reader.Close() 'on ferme l'objet
        Catch ex As Exception
            txtResult.Text = ex.Message.ToString
            writer.Close()
            reader.Close()
        End Try
Je génere une erreur lorsque je ferme le sw:
"La demande a été abandonnée : La demande a été annulée."

Est-ce à cause de mon Content-Type ? Je sais qu'il y a une histoire avec "boundary". A quoi ça sert et comment on s'en sert ? Merci...
Pour la petite histoire, le but est d'envoyer un fichier SavedVariables.lua sur un site pour mettre à jour un profil de joueur pour World Of Warcraft...

Commentaire de hvb le 21/03/2006 15:12:31

Tu fermes deux fois ton "writer" ....... vire le deuxieme "writer.Close()"

Commentaire de nquere le 21/03/2006 15:28:29

Uaip, mais c'était pas ça (le writer je l'avais mis pour un test que j'ai oublié de virer quand j'ai parser ici...)

En fait, il faut tout simplement une valeur "boudary" dans le content-type. "Boundary" sert en fait à délimité les données... C'est tout con mais j'ai chercher comme un taré :D

Merci ;)
@+

Commentaire de ptibuc le 26/05/2006 10:54:03

Source simple, claire, et qui marche parfaitement.

Merci beaucoup, très utile pour moi.

ps: je voudrais mettre un 10/10 mais on vote où ???

Commentaire de hvb le 26/05/2006 16:34:11

nquere : desolé de ne pas avoir repondu plus tot, je n'ai pas reçu de notification pour ton dernier commentaire, mais tu as resolu ton problème ^^

ptibuc : merci, pour voter c'est dans les liens en haut de la source dans "infomations sur la source", mais ne t'embete pas, un commentaire comme tu l'as fait est bien plus plaisant :)

Commentaire de OneHacker le 03/06/2006 21:53:58

HVB, grâce à toi j'ai fait un Aspirateur Web que je mettrai bientôt sur VBfrance.

Encore merci, bonne continuation !

Redman

Commentaire de NeverDie le 29/06/2006 16:26:17

Petit ajout. Il y a moyen de spécifié un utilisateur avant d'effectuer la requete pour être sûr d'avoir les droits.

Dim credential As New System.Net.NetworkCredential("User name","password")

hwebrequest.Credentials = credential

Commentaire de hvb le 28/07/2006 16:35:44

merci NeverDie pour l'ajout, je n'avais pas reçu l'email specifiant le nouveau commentaire. je ne peux pas mettre à jour aujourd'hui, et je pars en vacances demain, donc il faut esperer que les lecteurs jetteront un oeil aux commentaires en attendant ^^

Commentaire de PICOSOFT le 16/08/2006 11:39:37

Source claire et éfficasse pour moi,
a+

Commentaire de hvb le 11/02/2007 17:12:21

maj concernant le credential effectuée ^^

Commentaire de OneHacker le 19/02/2007 19:12:10

Ca sert  à quoi le credential en fait ? Là depuis l'idée de faire un Aspirateur avec ça j'ai l'ai améliroé et finalement je vais faire un moteur de recherche mais le seul problème c'est que sur VBFrance il y a aucun tuto clair ou source qui marche sur les expressions régulières ! Vous pouvez m'aider SVP ?

Cordialement

Redman

Commentaire de edertef le 28/03/2007 17:49:25

Merci pour ce codage, on dirais que c'est exactement ce qu'il me faillais !

Merci !

Commentaire de hvb le 28/03/2007 23:28:59

OneHacker : c'est pour s'authentifier sur les serveurs ou une securité de ce type est mise en place.
Edertef : de rien pour ce codage ^^

Commentaire de OneHacker le 08/04/2007 21:34:47

D'accord. PS : Je suis de retour pour une semaine.

Commentaire de hvb le 10/04/2007 10:21:47

lol!
PS : fais la pub de ta disponibilité autre part.

Commentaire de OneHacker le 10/04/2007 10:25:44

C'est pas le la pub. Et je suis là juste pour la semaine.

Commentaire de Kornebrume le 20/06/2007 11:37:05

Nikel le code.

Le login/mdp des fonctions get et Post servent-elles à s'identifier dans le cadre d'une boite mail par exemple?

Je souhaiterai m'identifier sur la page de config d'une SAGEM F@st 3302. Est-ce possible avec ce code?

Merci à vous pour vos réponses.

Korne

Commentaire de hvb le 20/06/2007 11:55:50

Non le couple login/pass ici permet de s'authentifier sur un systeme de type HTACCESS. (Quand tu as une petite boite de dialogue qui s'ouvre pour s'identifier).

Cependant, ce que tu cherches à faire est bien entendu réalisable. Il faudrait que tu sniffes les requetes envoyés à ta page de config sagem, pour voir quelles données sont transmises, puis que tu envoies celles ci via cette méthode.

Commentaire de Kornebrume le 20/06/2007 13:48:33

Et comment faire pour voir les requêtes/commandes qui sont envoyées à ma box?

Un logiciel particulier? Du matos à utiliser?

Merci à toi.

Korne

Commentaire de OneHacker le 20/06/2007 14:39:06

Comment on envoie une requete POST par contre ? car tu précises pas comment utiliser DATA si on doit faire quelque chose du genre "value1=a;value2=n" ou "value1>a," ect... nulle part c'est expliqué comment s'en servir.

Commentaire de hvb le 20/06/2007 18:03:15

Kornebrume : Perso  j'utilise un vieeuuuuuux logiciel qui date de 2000/2001, Winsock Packet Editor, mais si tu as un antivirus, celui ci est detecté en tant que "Hack Tool". Tu as également WireShark, anciennement Ethereal, qui est plus puissant mais moins simple d'utilisation. Enfin, tu as un sniffer spécialement conçu pour Internet Explorer, par Microsoft, mais je ne me souviens plus du nom. Tu peux trouver un equivalent ici : http://www.ieinspector.com/httpanalyzer/ (je ne l'ai pas testé)
Si avec tout ça tu ne trouve pas ton bonheur, alors cherche sur google "packet sniffer".
Voila voila

OneHacker : Je ne precise pas comment faire un post car l'utilisation de cette source sous entend que tu sais ce que tu veux faire... et donc que tu as un minimum de connaissances sur le protocole HTTP. En sniffant une requete comme je te l'avais conseillé sur le forum pour ton truc de skyblog là, tu l'aurais vu par toi même. Mais tu ne voulais pas écouter.
J'ajouterais un sample ce soir si j'y pense, MP moi si tu as un soucis.

Commentaire de OneHacker le 20/06/2007 20:30:42

C'est pas que je ne voulais pas écouter mais que je ne sais pas ce que "sniffer"

Commentaire de isame le 25/06/2007 10:39:28

salut!!
je travail actuellement sur un projet où un serveur m'envoi des requetes http par POST ou GET. Mais je suis confronté a un problème. Je ne sais pas  a quel moment la requête est envoyé. j'ai bien essayé de le faire dans le page_load() mais j'ai aucun resultat. je sais pas dans quel méthode je dois la traité. URGENTISSIME

Merci

Commentaire de hvb le 25/06/2007 11:37:23

le serveur t'envoie des requêtes poste sur quoi...??? Tu codes un serveur http?
Ce code est destiné à effectuer des requêtes, pas les traiter.

Commentaire de hvb le 25/06/2007 11:38:33

-e
...

Commentaire de isame le 25/06/2007 11:45:08

oui je comprend que ton code permet d'effectuer des requetes. mais met toi maintenant du coté du serveur sur lequel la requete est adressée. Exemple pratique:

j'ai un serveur avec un site.

http://www.isame.com
et jai besoin de traiter des requetes provenant d'une application utilisant ton code
par exemple tu m'envoie une requete http://www.isame.com?nom=hvb
je souhaite récupérer le parametre "nom" au niveau de mon application. et je sais pas comment le faire. j'ai essayer dans le page_load mais sans succès.

j'espère que tu me comprendra
Merci

Commentaire de Renfield le 25/06/2007 11:49:19 administrateur CS

dépend de la techno utilisée pour le site...

Asp/Php/...

Commentaire de hvb le 25/06/2007 11:59:04

comme le dit Renfield, cela depend de l'interpreteur de ton serveur.
Perso je ne fais que du PHP, ou ces infos sont stockés dans les tableaux $_GET et $_POST, avec comme clé le nom de l'element voulu.
Mais vu que tu evoque un page_load, tu dois bosser en asp...

Selon ce que je viens de lire :
Request.QueryString("aaa") 'recupere la valeur de parametre nommé "aaa"

Commentaire de hvb le 25/06/2007 12:03:32

il y a aussi :
Request.Params["varname"]

Mais une petite recherche sur le net doit te permettre de trouver ça. Je pense que la premiere que je t'ai donné contient les valeur GET, et celui ci les POST.
J'ai tappé "équivalent $_POST php" que google....

Commentaire de isame le 25/06/2007 12:43:59

je fais de l'asp.NET c# mais c pas sa mon probleme je peux récuperer les valeurs par POST ou GET ce que je demane c'est juste de savoir si, après l'utilisation de HttpRequest.GetResponse() au niveau du serveur y'a l'evenement Page_Load() qui est déclenché. Parce que à chaque requète par ta méthode je dois effectuer des traitements

Commentaire de OneHacker le 25/06/2007 13:49:17

Je te conseille d'aller sur le site cppfrance ou aspfrance donc.

Commentaire de isame le 25/06/2007 14:09:15

c pas sa le problème que ce soit en vb ou ec c# c pas le plus important. c'est le principe que je recherche

Commentaire de hvb le 25/06/2007 14:13:44

oneHacker : csharpfr, pas cppfrance.
Isame : Je ne saurais pas te dire, meme si il semblerait logique que ton evenement se declenche, de la meme maniere que si la page était appelé par un navigateur.
Mais OneHacker n'a pas tort, poser la question sur le forum ASP serait plus propice à obtenir une reponse... car comme je l'ai dit au dessus, je ne fais pas d'asp. Bon courage!

Commentaire de blehbleh123 le 18/07/2007 00:42:00

Et si jamais on a le caractère "&" dans une variable POST ? Ça bug ... ?! Comment y remédier?

Commentaire de Renfield le 18/07/2007 07:41:48 administrateur CS

par sa valeur hexa...

Commentaire de hvb le 18/07/2007 09:44:35

comme le dit Renfield, il faut échapper les caractères spéciaux en remplaçant ceux ci par leurs valeur hexa précedé de %
Donc pour l'esperluette (&) il faudra faire %26

Commentaire de blehbleh123 le 18/07/2007 10:12:00

Y'a t-il une commande précise pour transformer ces caractères en hexa ?

Commentaire de blehbleh123 le 18/07/2007 20:35:01

Quelqu'un sait ?

Commentaire de hvb le 18/07/2007 21:00:48

pas à ma connaissance...
soit tu echappe quelque caractères rapidement par un Replace,
soit tu utilise ça que j'ai écrit rapidement (donc testé rapidement également), qui remplace touts les caractères non alphanumérique :

    Public Function escape(ByVal str As String)
        Dim res As String = ""
        Dim cur As Integer = 0
        For i As Integer = 0 To str.Length - 1
            cur = System.Text.Encoding.ASCII.GetBytes(str.Substring(i, 1))(0)
            If ((cur >= 65) And (cur <= 90)) Or ((cur >= 97) And (cur <= 122)) Or ((cur >= 47) And (cur <= 58)) Then
                res &= Convert.ToChar(cur)
            Else
                res &= "%" & cur.ToString.PadLeft(2, "0")
            End If
        Next
        Return res
    End Function

Commentaire de romit le 14/12/2007 13:22:53

Salut, serais-t'il possible que le script prenne en compte les accents ? car je recoits des "?"

Commentaire de tricouilles le 16/12/2007 21:17:18

Dim readstr = New IO.StreamReader(hwebresponse.GetResponseStream, System.Text.Encoding.Default)

tu choisi le type d'encodage, default, utf8...

moi j'avais de carré/? !

Commentaire de pouda le 24/06/2008 15:04:02

heu...moi pas tout comprendre....est ce que le script permet d'envoyer des données à une page php ? si oui je ne vois pas comment récupérer ces données dans la page php..si quelqu'un pouvait me donner un exemple ca serait super cool

Commentaire de Renfield le 24/06/2008 15:09:25 administrateur CS

en php, on récupère via

$_GET   ou    $_POST

selon la méthode utilisée pour l'envoi des données du formulaire

exemple:
$nom = $_POST['UserName']

Commentaire de le_prince_des_ordinateurs le 17/07/2008 12:04:30

ce code m'a permis de me sortir d'une grosse galere
je te remercie encore

--->il me reste a savoir comment peut on envoyer un fichier en post ????<---
puisque ici on n'envoie que des string pas de file

merci encore hvb et vbfrance.com
vous dechirez

Commentaire de pouda le 17/07/2008 14:05:14

koooollll ca marche par contre je ne vois pas comment faire pour effectivement envoyer un fichier ...

Commentaire de Renfield le 17/07/2008 14:10:32 administrateur CS

faut placer le contenu du fichier dans le corps de la requette HTTP

voir les specs du HTTP

Commentaire de romit le 10/08/2008 18:24:04

Il me reste une dernière question, si la page demandée renvoit un cookie, comment faire pour le recuperer ?

Car on peut envoyer un cookie a la page mais je n'ai pas vu comment le recevoir.

Merci d'avance

Commentaire de romit le 10/08/2008 19:05:56

Et j'oubliais: Comment faire pour que le programme ne lag pas durant la recuperation de la source, car il est en mode "Ne répond pas"

Commentaire de hvb le 11/08/2008 12:50:04

'jour à tous, j'ai un petit peu abandonné le site, désolé et merci d'avoir laisser les autres répondre à ma place pour les différentes question ^^
Romit : pour les cookies tu as deux solutions :
la simple qui consiste à parcourir le tableau hwebresponse.Cookies qui contient tout les cookies demandés à être mis en place par le serveur (avec des propriétes name, value, path, expire, etc.)
Ou bien traiter directement l'entête HTTP renvoyé par le serveur, à coup de regex ou de methodes de la classe String, qui doit contenir des lignes
"Set-Cookie : nom_du_cookie=valeur; domain=un_nom_de_domain; expires=une_date"

Enfin pour le "ne repond pas", à toi de placer ta requete dans un thread ou un backgroundworker. Tu trouveras facilement des informations à ce sujet sur le site ^^

Commentaire de romit le 11/08/2008 15:58:52

D'accord, merci je vais me renseigner pour le système de thread :)

Commentaire de sorlok le 20/03/2009 15:59:57

Super script.
Je voudrais en plus y joindre l'upload d'un fichier. Donc utiliser un truc du genre "application/x-www-form-data", mais mon niveau m'empêche de trouver une telle solution.
Quelqu'un aurait un conseil à me donner?
Merci!

Commentaire de Renfield le 20/03/2009 16:07:46 administrateur CS

joues avec le soft Fiddler2

tu verra ce qu'il faut envoyer

Commentaire de sorlok le 20/03/2009 17:34:35

Vu.
Pas mal on voit passer ce qu'on veut.
Pour info si certains cherchent; une retour chariot se code %0D dans la requête HTTP

Commentaire de Sly727 le 06/04/2009 23:32:59

Bonjour,

j'ai à peu près le même soucis que Romit, le site où j'envoie mes requêtes me dit:
"Votre navigateur internet n'accepte pas les cookies. Vous devez modifier ceci dans les paramètres de sécurité avant de pouvoir continuer."

J'ai compris comment lire parcourir le tableau hwebresponse.Cookies qui contient tout les cookies demandés à être mis en place par le serveur grâce à ce qui est expliqué sur cette page:
http://msdn.microsoft.com/fr-fr/library/system.net.httpwebrequest.cookiecontainer.aspx

mais après je ne sais pas vraiment comment faire...

Est-ce que qqun pourrait m'aider svp ?

Commentaire de Renfield le 07/04/2009 00:35:19 administrateur CS

faut les réenvoyer a chaque requete, par la suite

Commentaire de Sly727 le 09/04/2009 05:16:51

Merci pour ta réponse.
Alors si j'ai bien compris je dois utiliser cette méthode pour mettre à jour les cookies à chaque requête:
hwebrequest.CookieContainer.SetCookies(New Uri(url.Substring(0, url.IndexOf("/", 8))), cookies)

et après faire ceci pour les renvoyer:
writer = New IO.StreamWriter(hwebrequest.GetRequestStream)
writer.Write(data)
writer.Close()

Mon problème c'est que je ne connais pas la structure du string "cookies". J'ai cherché de la docu ou des exemples sur MSDN mais j'ai rien trouvé...

Tout ce que j'ai trouvé, c'est:
Dim instance As CookieContainer
Dim uri As Uri
Dim cookieHeader As String
instance.SetCookies(uri, cookieHeader)

Mais il n'y a rien sur cookieHeader.

J'ai essayé de faire ceci, mais ça ne fonctionne pas:
Dim cook As Cookie
hwebrequest.CookieContainer = New CookieContainer
For Each cook In hwebresponse.Cookies
hwebrequest.CookieContainer.SetCookies(New Uri(cook.Domain), cook.Value & cook.Name & cook.Version & cook.Path & cook.Domain)
writer = New IO.StreamWriter(hwebrequest.GetRequestStream)
writer.Write(data)
writer.Close()
Next cook

J'ai une erreur:
Le programme s'est arrêté avec le code 0 (0x0).

Est-ce que qqun pourrait m'aider svp ?

Commentaire de Sly727 le 09/04/2009 05:21:39

Non en fait l'erreur, c'est:
Une exception de première chance de type 'System.UriFormatException' s'est produite dans System.dll

Commentaire de Renfield le 09/04/2009 06:42:27 administrateur CS

dans ta boucle for each cook
tu récupère bien une instance de la classe cook pour chacun des cookies a reproduire dans hwebrequest ?

en ce cas, faire bêtement (en gros)

hwebrequest.CookieContainer = New CookieContainer
For Each cook As Cookie In hwebresponse.Cookies
    hwebrequest.CookieContainer.Add cook
Next cook

Commentaire de Sly727 le 11/04/2009 23:59:21

Merci pour ta réponse.

J'ai essayé ce que tu m'as dit, mais j'ai toujours le même message d'erreur:
"Votre navigateur internet n'accepte pas les cookies. Vous devez modifier ceci dans les paramètres de sécurité avant de pouvoir continuer."

Je ne sais plus vraiment quoi faire. Est-ce que qqun aurait une idée ?

Commentaire de Renfield le 12/04/2009 01:10:10 administrateur CS

a voir avec Fiddler2, voir ce que tu transmets, et ce que transmets IE, par exemple

Commentaire de Sly727 le 13/04/2009 13:12:53

Avec Fiddler2, il y a des cookies en plus que je ne vois pas en vb, ils sont tous HTTPOnly. Est-ce que ça viendrait de ça ?
Je les ai récupéré et j'ai essayé de les passer en variable, mais je ne sais pas sous quelle forme ils faut les saisir.
J'ai une erreur sur cette ligne:
hwebrequest.CookieContainer.SetCookies(New Uri(url.Substring(0, url.IndexOf("/", 8))), cookies)

Commentaire de Sly727 le 13/04/2009 16:54:20

C'est bon j'ai réussi, mais c'est un peu du bricolage...

Dim strCookies As String
strCookies = "JSESSIONID=XXXXXXXXXXXXXXXX" ' le cookie que j'ai récupéré

If cookies <> "" Then
hwebrequest.CookieContainer = New CookieContainer
hwebrequest.CookieContainer.SetCookies(New Uri("http://www.monsite.com/"), cookies)
End If

Encore merci à Renfield pour son aide ;-)

Commentaire de Razordj le 06/10/2009 15:14:28

Est ce que c'est sécuritaire?, je veux dire.. est-ce que les packets contenant les "creditentials" peut être intercepté et cracké ?

Commentaire de Renfield le 06/10/2009 15:28:19 administrateur CS

bien sûr que c'est percable
tout autant qu'avec n'importe quel naviguateur.

si tu veux du secure, voir https ou autre

Commentaire de fabulofr le 28/11/2009 17:40:57

Hello.
J'ai un "Type 'CookieContainer' is not defined"

Il faut ajouter une réference ? si oui, laquelle ?
Cordialement.

Commentaire de fabulofr le 28/11/2009 18:40:09

Ajouter System.NET et mettre System.Net. devant le cookiecontainer ^^

Par contre, comment modifier le code afin de récuperer les headers en plus du contenu ?

Commentaire de Bansan le 08/05/2011 13:32:09

Bonjour
je cherche actuellement a afficher dans un textbox le contenu de pages internet
Or, je tombe sur un site, où la connection au serveur n'est pas possible quand j'effectue une requete par httprequest en vb.net
Je n'arrive pas a determiner la raison
voici le type d'url dont je n'arrive pas a obtenir le contenu de la page internet:http://forum.downparadise.ws/search.php?keywords=HOUSE&terms=all&author=&sc=1&sf=titleonly&sk=t&sd=d&sr=topics&st=0&ch=300&t=0&submit=Rechercher

Si quelqu'un peut m'expliquer pkoi

Merci

Commentaire de Sly727 le 08/05/2011 15:06:57

Je pense tout simplement qu'il faut avoir un compte sur ce site pour faire une recherche.
Il te faut donc envoyer tes identifiants au site en les passant en paramètres dans ton code vb.
Après le site reconnaitera ta session et tu pourras faire des recherches depuis ton programme vb.

Commentaire de FGHDRAGON le 14/06/2011 21:03:26

salut,
j'ai essayé ce code pour se connecter sur facebook et ca n'a pas marché :(
un petit help svp

Commentaire de fabulofr le 01/09/2011 12:48:35

Hello !
De retour avec la version 2010 de vb.net express, j'essaye de reprendre un vieux projet que je réalisais sous 2008 ou 2005 je sais plus. bref.
La ligne "Dim hwebresponse As System.Net.HttpWebResponse = hwebrequest.GetResponse 'on crée un objet de reponse a notre requete " me rapporte une erreur:
"L'exception ProtocolViolationException s'est produite: Content-Length ou l'encodage mémorisé ne peut pas être défini pour une opération ne permettant pas l'écriture de données."

WTF ?_?

Commentaire de fabulofr le 02/09/2011 22:27:43

Solution trouvée, si d'autres ont ce souci:
J'avais ajouté une ligne dans mon projet:
hwebrequest.SendChunked=true.
J'ai mis à false et ça roule.

Par contre, j'ai beau mettre :
Dim readstr = New IO.StreamReader(hwebresponse.GetResponseStream, System.Text.Encoding.Default) ou tout autre encodage, j'ai toujours un ? dans un losange.
Coté PHP, que je fasse :
header('Content-Type: text/html; charset=ISO-8859-1');
ou
header('Content-Type: text/html; charset=UTF-8');

Ca ne change strictement rien :-(

Je reste bloqué sur de *ù$^$ù*$^*ùù de truc d'accents ça saoule xD

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

ACCESS et INTERNET (HTTP POST/GET) [ par SqUaB ] Bonjour,Je suis à la recherche d'un moyen qui, depuis Access, me permettrait de faire des accès sur le WEB (HTTP/GET HTTP/POST). J'ai lu sur le forum Comment Faire une requete HTTP Post ? [ par Cyberdevil ] HI !EN faite ayant bcp de donnée a envoyer a un site je ne peut pas faire un simple GET (machin.htm?xx=rer etc...) donc je doit foutre les données dan Requete HTTP : POST [ par vbguigui ] Bonjour,J'aimerais avoir un programme qui créé et envoie une requete POST avec des données post. Y a-t-il quelqu'un qui sait le faire et le poster svp serveur Http et get/post [ par smasher81 ] Allo, je cherche depuis quelques temps seulement la façon de receillir un get ou un post d'une page sur mon serveur.. tout simple la.. Pourrais-tu m'a SQL Serveur et HTTP POST REQUEST [ par OneHacker ] Bon je repose mes questions car j'ai toujours pas de réponse depuis des mois, donc première question.Où trouver un installateur Microsoft SQL 2005 qui Requete HTTP [ par JALEO WAHRANI ] Salut,Je vous envoie ce post en car j'aurai besoin d'aide:Je dois depuis une appli VB envoyer des paramètres à une page Web par la méthode POST. Pour Interconnection PHP (post Get...) [ par ABF ] Bonjour, J'aimerais faire appel à une page php et recupérer le contenu. Comment faire appel à la page avec des parametres et ce sans le controle bro lOGIN EN PHP [POST] [ par Tanner47 ] Bonjour, pourriez vous m'aider, j'aimerai me connecter sur ce site via POST sous vb6 http://s9.gladiatus.fr/game/index.php?=mod=loginj'ai essayer sa m authentification avec la méthode post [ par aurel16 ] Bonjour, Je souhaiterais faire un petit logiciel pour m'authentifier directement au site Free. J'ai codé cela : Dim request As system.Net.HttpWebR POST DATA [ par aurel16 ] Bonjour, Je voudrais créer un logiciel qui permet de se loger automatiquement à un site web. Par exemple, j'ai créé une page sur le web qui demande u


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 9,953 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales