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 / Exemple :
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.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.