3 votes

comment obtenir des fichiers https en fonction de l'URL en asp.net c#

Dans mon cas, j'ai besoin d'obtenir le fichier à partir d'une URL. J'ai essayé, mais j'obtiens toujours une erreur interdite. Veuillez essayer de résoudre ce problème. Regardez mon code.

var webRequest = WebRequest.Create("https://www.fda.gov/ucm/groups/fdagov-public/@fdagov-drugs-gen/documents/document/ucm509432.pdf");  
using (var response = webRequest.GetResponse())
   using (var content = response.GetResponseStream())
      using (var reader = new StreamReader(content))
      {
         var strContent = reader.ReadToEnd();
      }

6voto

Oguz Ozgul Points 2690

Lorsque j'ai vérifié le contenu de la réponse du serveur, j'ai réalisé qu'il indiquait que le client devait supporter TLSv1.2.

Pour activer le support TLSv1.2, ajoutez la ligne suivante avant de créer la classe HttpWebRequest : (Merci à BugFinder pour l'astuce de la valeur d'énumération directe)

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

J'affiche le code source complet.

Vous pouvez également voir que j'ai testé l'envoi de certains en-têtes au serveur pour voir si l'absence de l'un d'entre eux était le problème :

class Program
{
    static void Main(string[] args)
    {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

        HttpWebRequest webRequest = HttpWebRequest.Create("https://www.fda.gov/ucm/groups/fdagov-public/@fdagov-drugs-gen/documents/document/ucm509432.pdf") as HttpWebRequest;
        webRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko";
        webRequest.Accept = "text/html, application/xhtml+xml, */*";
        webRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
        webRequest.Headers.Add("Accept-Language", "tr-TR");
        webRequest.Headers.Add("DNT", "1");

        using (var
             response = webRequest.GetResponse())
        using (var content = response.GetResponseStream())
        using (var reader = new StreamReader(content))
        {
            var strContent = reader.ReadToEnd();
        }
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X