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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Cordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Juaaah.
Partager