Problème requête web avec HttpClient
Bonjour, j'ai un petit soucis quand à l'utilisation de HttpClient.
Je compte faire plusieurs requêtes web, essentiellement GET et POST.
Il y a quelques années j'y arrivais sans soucis, et là j'ai voulu re faire un petit projet, seulement ça ne fonctionne plus : le programme se fige (car pas asynchrone mais je m'en fou un peu pour le coup) et me renvoie un timeout.
Là j’utilise HttpClient, qui est plus sûr que HttpWebRequest de ce que j'ai compris, car avant c'est ce que j'utilisais.
Alors problème de code ou autre, je ne sais pas trop..
J'ai essayé avec plusieurs hôtes mais tout le temps pareil.
Là le test est effectué avec youtube. Il dois m'afficher la réponse, donc le code source de la page logiquement.
Voici le code utilisé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MsgBox(WRequest("https://www.youtube.com/", "GET", ""))
End Sub
Function WRequest(URL As String, method As String, POSTdata As String) As String
Dim responseData As String = String.Empty
Try
Dim cookieJar As New Net.CookieContainer()
Dim hwrequest As Net.HttpWebRequest = Net.WebRequest.Create(URL)
hwrequest.CookieContainer = cookieJar
hwrequest.Accept = "*/*"
hwrequest.AllowAutoRedirect = True
hwrequest.UserAgent = "http_requester/0.1"
hwrequest.Timeout = 600
hwrequest.Method = method
If hwrequest.Method = "POST" Then
hwrequest.ContentType = "application/x-www-form-urlencoded"
Dim encoding As New Text.ASCIIEncoding() 'Use UTF8Encoding for XML requests
Dim postByteArray() As Byte = encoding.GetBytes(POSTdata)
hwrequest.ContentLength = postByteArray.Length
Dim postStream As IO.Stream = hwrequest.GetRequestStream()
postStream.Write(postByteArray, 0, postByteArray.Length)
postStream.Close()
End If
Dim hwresponse As Net.HttpWebResponse = hwrequest.GetResponse()
If hwresponse.StatusCode = Net.HttpStatusCode.OK Then
Dim responseStream As IO.StreamReader =
New IO.StreamReader(hwresponse.GetResponseStream())
responseData = responseStream.ReadToEnd()
End If
hwresponse.Close()
Catch e As Exception
responseData = "An error occurred: " & e.Message
End Try
Return responseData
End Function
End Class |
J'ai même essayé avec ce code que j'ai retrouvé sur le forum sur un de mes topics, et ça ne fonctionne pas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| Imports System.Net
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim myUrl As New Uri("https://www.youtube.com/")
MsgBox(Get_request(myUrl))
End Sub
Private Function Get_request(ByVal url As Uri, 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 = "", Optional ByVal token As String = "") As String
Dim reader As IO.StreamReader
Try
Dim hwebrequest As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(url)
hwebrequest.Method = "GET"
hwebrequest.Timeout = timeout
If proxy <> "" Then
Dim hproxy As WebProxy
hproxy = New WebProxy(proxy, proxyport)
WebRequest.DefaultWebProxy = hproxy
End If
Dim hwebresponse As System.Net.HttpWebResponse = hwebrequest.GetResponse
reader = New IO.StreamReader(hwebresponse.GetResponseStream)
Dim res As String = ""
res = reader.ReadToEnd()
reader.Close()
hwebresponse.Close()
Return res
Catch ex As Exception
Return ex.ToString
End Try
End Function
End Class |
Cordialement,
Juaaah.