Requête HTTP n'échoue pas comme elle le devrait
Résolu
barnabe0057
Messages postés
14455
Date d'inscription
Statut
Contributeur
Dernière intervention
-
barnabe0057 Messages postés 14455 Date d'inscription Statut Contributeur Dernière intervention -
barnabe0057 Messages postés 14455 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- La requête http a échoué
- Http - Guide
- Http //192.168.l.l - Guide
- L'accès a la carte sd a échoué 3ds - Forum Jeux vidéo
- Http //zh.ui.vmall.com/emotiondownload.php mod=restore - Forum Huawei
- Http //tv.hotelbb.com ✓ - Forum Virus
3 réponses
Bonjour
Je suis autodidacte et je n'ai jamais eu à coder d'appli liée au web. Donc cette classe là spécifiquement je ne la connais pas.
Cependant, le "mot clé" Async dans le nom de la méthode explique que tu n'aies pas d'erreur.
Tu es loin d'être un débutant en programmation, vu ton niveau en Batch (perso j'y pipe rien en bacth ;) ), mais je ne sais pas si tu es familier ou non du multithread. Donc je vais te brosser un portrait général.
Async ça veut asynchrone, littéralement qui ne se passe pas dans le même temps.
Concrètement, une méthode Async ne fait ce que son nom (ou l'aide en ligne) décrit mais elle lance un thread qui le fait.
Le thread vit sa vie de son coté et la ligne a été exécutée avec succès puisque le thread est lancé.
Un intérêt du multithread est de ne pas figer "la page" de l'application pendant l'exécution d'une tache longue. Dans le cas d'une application en mode console, ça n'a pas vraiment d'intérêt du coup.
Pour beaucoup de classe, il existe la méthode Asynch et la méthode "normale", mais selon l'aide en ligne elle n'existe pas.
En plus, ce ne sont pas les thread de bases qui sont utilisés mais une fabrique de threads (puissant, mais pas simple à expliquer)
Par contre, il y a un exemple consistant à rendre le programme lui même "inclus" dans la fabrique de thread sur l'aide en ligne
https://docs.microsoft.com/fr-fr/dotnet/api/system.net.http.httpclient?view=netframework-4.8
Je l'ai modifié ainsi pour tester (et pas te raconter n'importe quoi)
Si tu veux comprendre le pourquoi du comment, je te recommande cette série de 4 tutos
https://fdorin.developpez.com/tutoriels/csharp/threadpool/part1/
https://fdorin.developpez.com/tutoriels/csharp/threadpool/part2/
https://fdorin.developpez.com/tutoriels/csharp/threadpool/part3/
https://fdorin.developpez.com/tutoriels/csharp/threadpool/part4/
Je suis autodidacte et je n'ai jamais eu à coder d'appli liée au web. Donc cette classe là spécifiquement je ne la connais pas.
Cependant, le "mot clé" Async dans le nom de la méthode explique que tu n'aies pas d'erreur.
Tu es loin d'être un débutant en programmation, vu ton niveau en Batch (perso j'y pipe rien en bacth ;) ), mais je ne sais pas si tu es familier ou non du multithread. Donc je vais te brosser un portrait général.
Async ça veut asynchrone, littéralement qui ne se passe pas dans le même temps.
Concrètement, une méthode Async ne fait ce que son nom (ou l'aide en ligne) décrit mais elle lance un thread qui le fait.
Le thread vit sa vie de son coté et la ligne a été exécutée avec succès puisque le thread est lancé.
Un intérêt du multithread est de ne pas figer "la page" de l'application pendant l'exécution d'une tache longue. Dans le cas d'une application en mode console, ça n'a pas vraiment d'intérêt du coup.
Pour beaucoup de classe, il existe la méthode Asynch et la méthode "normale", mais selon l'aide en ligne elle n'existe pas.
En plus, ce ne sont pas les thread de bases qui sont utilisés mais une fabrique de threads (puissant, mais pas simple à expliquer)
Par contre, il y a un exemple consistant à rendre le programme lui même "inclus" dans la fabrique de thread sur l'aide en ligne
https://docs.microsoft.com/fr-fr/dotnet/api/system.net.http.httpclient?view=netframework-4.8
Je l'ai modifié ainsi pour tester (et pas te raconter n'importe quoi)
// HttpClient is intended to be instantiated once per application, rather than per-use. See Remarks. static readonly HttpClient client = new HttpClient(); public static async Task Main(string[] args) { // Call asynchronous network methods in a try/catch block to handle exceptions. try { Console.WriteLine("CCM"); HttpResponseMessage response = await client.GetAsync("https://forums.commentcamarche.net/forum/"); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); Console.WriteLine("Lien incomplet"); response = await client.GetAsync("https://ngdong.murky-lane.top"); response.EnsureSuccessStatusCode(); responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } catch (HttpRequestException e) { Console.WriteLine("\nException Caught!"); Console.WriteLine("Message :{0} ", e.Message); } Console.ReadKey(); }
Si tu veux comprendre le pourquoi du comment, je te recommande cette série de 4 tutos
https://fdorin.developpez.com/tutoriels/csharp/threadpool/part1/
https://fdorin.developpez.com/tutoriels/csharp/threadpool/part2/
https://fdorin.developpez.com/tutoriels/csharp/threadpool/part3/
https://fdorin.developpez.com/tutoriels/csharp/threadpool/part4/
Merci pour ta solution que j'ai testé et qui fonctionne. Il faut que je creuse encore un peu pour maintenant ignorer les erreurs liées à la validation du certificat SSL/TLS, je pense avoir trouvé une piste du côté de la propriété ServerCertificateCustomValidationCallback de la classe HttpClientHandler :
https://docs.microsoft.com/fr-fr/dotnet/api/system.net.http.httpclienthandler.servercertificatecustomvalidationcallback?view=net-6.0#system-net-http-httpclienthandler-servercertificatecustomvalidationcallback
Je n'ai malheureusement pas le temps de me pencher là dessus aujourd'hui, je regarderai ce soir ou demain au pire.
Merci beaucoup pour tes explications et ta solution, je te tiendrai au jus.
https://docs.microsoft.com/fr-fr/dotnet/api/system.net.http.httpclienthandler.servercertificatecustomvalidationcallback?view=net-6.0#system-net-http-httpclienthandler-servercertificatecustomvalidationcallback
Je n'ai malheureusement pas le temps de me pencher là dessus aujourd'hui, je regarderai ce soir ou demain au pire.
Merci beaucoup pour tes explications et ta solution, je te tiendrai au jus.