Maison >développement back-end >C++ >Comment puis-je corriger les erreurs « Impossible d'établir une relation de confiance » lors des appels HTTPS avec HttpClient ?

Comment puis-je corriger les erreurs « Impossible d'établir une relation de confiance » lors des appels HTTPS avec HttpClient ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-18 00:24:13800parcourir

How Can I Fix

Utilisez HttpClient pour passer des appels HTTPS sécurisés

Question :

Lors de l'utilisation de HttpClient pour effectuer une requête HTTPS, une erreur se produit : "La connexion sous-jacente a été fermée : impossible d'établir la confiance pour le canal sécurisé SSL/TLS."

Solution :

Pour résoudre ce problème, veuillez suivre ces étapes :

  1. Définir le protocole de sécurité :

    Spécifiez le protocole TLS utilisé par défaut. Ajoutez les lignes suivantes à votre code :

    <code class="language-csharp">System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;</code>
  2. Modifier le code HttpClient :

    Code HttpClient modifié pour prendre en charge les appels HTTPS :

    <code class="language-csharp">HttpClient httpClient = new HttpClient();
    System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
    httpClient.BaseAddress = new Uri("https://foobar.com/");
    httpClient.DefaultRequestHeaders.Accept.Clear();
    httpClient.DefaultRequestHeaders.Accept.Add(
        new MediaTypeWithQualityHeaderValue("application/xml"));
    
    var task = httpClient.PostAsXmlAsync<devicerequest>("api/SaveData", request);</code>

Notes supplémentaires :

    Cette solution suppose que le serveur ne prend en charge que les versions TLS supérieures (par exemple, TLS 1.2).
  • Si le serveur nécessite un certificat ou une clé personnalisée, une configuration supplémentaire est requise.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn