tomlev, j'ai essayé d'appliquer ta suggestion. Ce serait quelque chose comme cela ?
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 39
| Private Sub test()
Dim oWebClient As New WebClient
Dim sbParameter As New StringBuilder
With sbParameter
.Append("form_value_array%5B1%5D%5Belement_id%5D=cfg-element-4-25&")
.Append("form_value_array%5B1%5D%5Belement_value%5D=testProxy&")
.Append("form_value_array%5B1%5D%5Belementlabel_id%5D=cfg-element-4-25-label&")
.Append("form_value_array%5B1%5D%5Belementlabel_value%5D=Client&")
.Append("form_value_array%5B2%5D%5Belement_id%5D=cfg-element-4-27&")
.Append("form_value_array%5B2%5D%5Belement_value%5D=raoul@gmail.com&")
.Append("form_value_array%5B2%5D%5Belementlabel_id%5D=cfg-element-4-27-label&")
.Append("form_value_array%5B2%5D%5Belementlabel_value%5D=ClientMail&")
End With
Dim bytArguments As Byte() = Encoding.Default.GetBytes(sbParameter.ToString)
Dim bytRetData As Byte()
Dim stReturn As String
oWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded")
Try
bytRetData = oWebClient.UploadData(sURL, "POST", bytArguments)
stReturn = Encoding.Default.GetString(bytRetData)
Catch ex As WebException
If ex.Message.Contains("407") Then
Dim proxy = WebRequest.GetSystemWebProxy()
Dim request As HttpWebRequest
request = HttpWebRequest.Create(sURL)
proxy.Credentials = New NetworkCredential(sLogin, sPassword)
request.Proxy = proxy
bytRetData = oWebClient.UploadData(sURL, "POST", bytArguments)
stReturn = Encoding.Default.GetString(bytRetData)
End If
End Try
End Sub
End Class |
Dans cet exemple, il s'agit d'aller remplir un formulaire web par la méthode POST.
Cet exemple marche très bien sans proxy. Je peux le tester chez moi où je n'ai pas de proxy.
Pour le tester avec proxy, il faut que je le fasse au boulot où je suis derrière un proxy avec authentification pour aller sur le web. Mais au boulot, je n'ai pas accès à mon environnement de développement donc s'il faut que je tatonne pour que ça marche ça va prendre du temps (navette à faire entre mon boulot et chez moi).
Donc si tu peux me dire ce que tu penses de ce code, cela m'aidera à dégrossir.
Mes doutes sur ce code concernent la ligne
request = HttpWebRequest.Create(sURL)
Pour le reste, j'ai bien à l'esprit que la répétition des 2 dernières lignes sera à éviter mais c'est juste pour voir...
EDIT : à la réflexion j'écrirais plutôt cela pour le catch :
1 2 3 4 5 6 7 8 9 10
| Catch ex As WebException
If ex.Message.Contains("407") Then
Dim proxy = WebRequest.GetSystemWebProxy()
proxy.Credentials = New NetworkCredential(sLogin, sPassword)
oWebClient.Proxy = proxy
bytRetData = oWebClient.UploadData(sURL, "POST", bytArguments)
stReturn = Encoding.Default.GetString(bytRetData)
End If
End Try |
Qu'en penses-tu ?
Partager