Résoudre les problèmes d'authentification de base HttpWebRequest
Cet article traite d'un problème courant rencontré lors de l'utilisation de HttpWebRequest
avec l'authentification de base : "La connexion sous-jacente a été fermée : une erreur inattendue s'est produite lors d'un envoi." Cette erreur résulte souvent de conflits avec la gestion de l'authentification par défaut.
La solution est de contourner le mécanisme par défaut et de gérer directement l'en-tête Authorization
. Cet en-tête nécessite la méthode d'authentification ("Basic") et les informations d'identification codées en base64.
Voici comment mettre en œuvre cela :
<code class="language-csharp">var username = "abc"; var password = "123"; string encoded = Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1") .GetBytes(username + ":" + password)); httpWebRequest.Headers.Add("Authorization", "Basic " + encoded);</code>
Cet extrait de code prend le nom d'utilisateur et le mot de passe, les encode en base64 avec l'encodage ISO-8859-1 (pour garantir la compatibilité avec le serveur), puis ajoute la chaîne résultante à l'en-tête Authorization
du HttpWebRequest
. Cela permet à la demande de s'authentifier correctement, empêchant la fermeture de la connexion et permettant une communication réussie. L'utilisation du codage ISO-8859-1 est cruciale pour résoudre de nombreux échecs d'authentification. En définissant manuellement l'en-tête, l'application évite les problèmes potentiels avec le processus d'authentification par défaut.
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!