J'essaie de télécharger un fichier à partir d'un site Web à l'aide du code suivant: L'exception affichée est "Erreur interdite 403" p> Ça signifie une page non trouvée Mais je peux télécharger ce fichier à l'aide du code Java et je peux aussi le télécharger directement à partir de ce site Web. P> Comment télécharger ceci à l'aide du code C #? P> P>
5 Réponses :
Essayez quelque chose comme
plz me dire comment utiliser ce code. whr nous voulons donner le lien
Vous devez définir les deux en-têtes suivants pour que cela fonctionne:
exemple (testé): strong> p>
@Brokenglass: Sortie de la curiosité, connaissez-vous l'agent utilisateur par défaut de WebClient?
Par défaut que l'en-tête n'est pas défini du tout si je ne me trompe pas
@Brad, c'est rien. Un bon moyen de déboguer / homologue dans les interactions HTTP est d'utiliser un projet appelé Fiddler. Fiddler2.com/fiddler2 . La seule chose envoyée est la demande d'obtention.
@ Tritchmelton: J'utilise habituellement des éthérées, mais j'ai pensé que quelqu'un aurait une réponse plus rapide que celle de moi à la filature d'un projet. Merci pour la réponse, je l'apprécie.
@Brad - basé sur mon expérience avec le déploiement de Wans Satcom distribuée, je pense que l'éthéré (Wireshark, etc.) est bon pour le dépannage des problèmes de réseau. Fiddler est idéal pour le débogage HTTP de niveau d'application. C'est un outil spécifique pour un travail spécifique. Je recommande fortement de jeter un coup d'oeil.
@ Tritchmelton: Est-ce que ces jours-ci ne feront pas trop de déboguer dans ce domaine (en plus d'aider un soirée aussi souvent). Et tout ce que je fais effectue est généralement facilement débogué avec tamperdata à FF (bien que de retour quand je l'ai fait, j'ai généralement aimé voir les données brutes - était toujours amusante à faire des hacks de jeu via le proxy dans les années 90; p - oups, a fait Je dis ça?)
J'ai testé cette URL avec Wget et obtenu une erreur 403. J'ai pu résoudre ce problème en ajoutant une chaîne d'agent utilisateur à l'en-tête p>
Essayez d'ajouter une chaîne d'agent utilisateur à l'en-tête, en utilisant webclient.headers.add (httpRequestheader.useragent, "bla") code> p> p>
Cela fixe le problème pour moi lorsque vous essayez de télécharger une page Web différente.
La première chose à noter est que si vous essayez l'URL de votre navigateur, le fichier télécharge. Ce qui vous dit, c'est que vous devez configurer le WebClient pour envoyer des en-têtes imitant ce que le site Web s'attendrait à ce qu'un navigateur fasse. C'est ce qui fonctionne pour moi:
var wc = new WebClient();
var ua = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
wc.Headers.Add(HttpRequestHeader.UserAgent, ua);
wc.Headers["Accept"] = "/";
wc.DownloadFile("http://www.nseindia.com/content/historical/EQUITIES/2011/MAR/cm07MAR2011bhav.csv.zip", @"d:\myfile.txt");
using (WebClient wc = new WebClient())
{
wc.Headers.Add("Referer:https://www.nseindia.com/products/content/equities/equities/archieve_eq.htm");
wc.Headers.Add("User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36");
wc.DownloadFile(url, fileName);
}
Des commentaires? Pourquoi pensez-vous que cela devrait fonctionner? Comment est-il différent des réponses précédentes?
403 interdit ne signifie pas la page non trouvée..Il signifie interdit
403 ne signifie pas la page non trouvée; Ce serait 404. 403 en fait est «interdit», comme le contenu est là, mais vous n'avez pas les bonnes informations d'identification.
Je peux le télécharger directement à partir de ce site Web et utiliser le code Java.Mais en utilisant le code C # que je ne peux pas télécharger