Utilisation de la méthode HttpClient().PostAsync
Bonjour,
Je dois transmettre des données à une API WEB. Je travaille en VB.net et je n'ai jamais fait ce genre de chose.
Je suis bien sûr allé à la pêche sur le WEB pour trouver une solution; je n'ai pas trouvé beaucoup d'exemples en VB, la plupart sont en C# mais je suis quand même arrivé à quelque chose qui parait fonctionner.
Je fais mes essais en utilisant https://jsonplaceholder.typicode.com/todos.
A terme je dois envoyer une liste d'objets sérialisés en Json mais je veux d'abord franchir une première étape simple en transmettant un texte. Le site utilisé renvoie ce qu'il a reçu si la transmission est bonne, je devrais donc recevoir en réponse le texte que je transmets; Ce n'est pas le cas.
Voici mon code complet:
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| Dim mOK As Boolean = False
Sub Main()
Console.WriteLine("Test de transmlission HTTP")
Dim T As Task = EnvoyerAsync()
While mOK = False
System.Threading.Thread.Sleep(1000)
End While
Console.WriteLine("Traitement terminé")
Console.ReadKey()
Stop
End Sub
Async Function EnvoyerAsync() As Task(Of Boolean)
Const TxtURI As String = "https://jsonplaceholder.typicode.com/todos"
Dim mURI As New Uri(TxtURI)
Dim Site As New System.Net.Http.HttpClient()
Try
Dim Texte As String = "TEST ENVOI"
Dim St As New StringContent(Texte)
Using maTachePost As Task(Of HttpResponseMessage) = Site.PostAsync(TxtURI, St)
Using Reponse As HttpResponseMessage = Await maTachePost
Using Contenu As HttpContent = Reponse.Content
Console.WriteLine("Status de succès: " & IIf(Reponse.IsSuccessStatusCode, "Réussie", "Echec"))
Console.WriteLine("Content: ")
Dim Ligne As String = Contenu.ReadAsStringAsync().Result
If Ligne IsNot Nothing Then
Console.WriteLine(Reponse.Content)
Else
Console.WriteLine("Echec de la lecture du contenu")
End If
mOK = True
End Using
End Using
End Using
Return True
Catch ex As Exception
MsgBox("Erreur: " & vbCrLf & ex.Message)
Console.WriteLine("Erreur {0}", ex.Message)
Return False
End Try
End Function |
Et voici les résultats affichés sur la console:
Citation:
Test de transmlission HTTP
Status de succès: Réussie
Content:
System.Net.Http.HttpConnectionResponseContent
Traitement terminé
Quoi que j'essaie d'envoyer Le "HttpResponseMessage.Content" = System.Net.Http.HttpConnectionResponseContent
Bien que le statudCode indique la réussite je doute que le travail ait été correctement accompli.
Qu'en pensez-vous ?
Merci :D