rajoute peut-être la ligne
après ta ligne 55 (en principe par défaut, la propriété est déjà à true, mais sait-on jamais)
Code : Sélectionner tout - Visualiser dans une fenêtre à part request.AllowAutoRedirect=true;
rajoute peut-être la ligne
après ta ligne 55 (en principe par défaut, la propriété est déjà à true, mais sait-on jamais)
Code : Sélectionner tout - Visualiser dans une fenêtre à part request.AllowAutoRedirect=true;
J'ai toujours la même chose
Il y a moyen pour nous de tester la vraie adresse internet que tu interroges ? (au moins pour un fichier)
Voici une adresse réelle qui est dans le document : http://applnet.fiducial.fr/GetConten...&p5=1&p6=NOPUB
En revanche elle ne fonctionnera pas car elle est uniquement disponible sur l'intranet
Ce lien ne fonctionne effectivement pas, donc pas moyen de t'aider avec celui-ci.
Le lien que tu m'as envoyé en MP n'aidera pas non plus puisque qu'il mène directement au fichier et donc peut être utilisé directement avec webclient.dowloadfile
Ce qu'il manque c'est le passage de la requête interne vers la localisation "physique" du fichier, donc récupérer la redirection
Comment puis-je récupérer la redirection ?
c'est là le problème ....
essai en rajoutant un type de contenu au header de la requête, toujours avant de récupérer la réponse
tu peux aussi faire un essai en mettant à false AllowAutoRedirect pour voir
Code : Sélectionner tout - Visualiser dans une fenêtre à part request.ContentType="application/pdf";
Au header de la requête, c'est-à-dire ?
... rajoute la ligne de code que j'ai mise avant l'appel à GetResponse() (vers les lignes 55-56 de ton précédent code posté et donc vers le AllowAutoRedirect que tu as en principe rajouté)
J'ai toujours les mêmes fichiers de 18ko qui se téléchargent
Tu as dit que cela fonctionnait avec l'utilisation du WebBrowser. Est-ce que tu ne peux pas récupérer par celui-ci l'adresse du fichier à télécharger et ensuite la passer au webclient ?
Avec cette méthode ça fonctionnait : System.Diagnostics.Process.Start(link);
Il faudrait peut être mettre une authentification au vu du code dans les fichiers téléchargés ?
Voici le code des fichiers qui se téléchargent :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.01 Transitional//EN" > <html> <head> <title>INTRANET II - Identification centralisée</title> <meta content="no-cache" http-equiv="Pragma" /> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <meta name="description" content="INTRANET II - Powered by nginx & Mono" /> <link rel="stylesheet" type="text/css" href="Login.css" /> <script type="text/javascript"> function StopClick(e) { if (!CheckFields()) return true; e = e || window.event; var srcButton = e.srcElement; var login = document.getElementById("username").value; var pwd = document.getElementById("password").value; var btn = document.getElementById("btnValider");
Je pense que tu essaies d'accéder à une ressource protégée, qui nécessite d'être authentifié, du coup ça subit une redirection vers une page de login. Il te faut fournir des credentials à ta HttpWebRequest. Tu peux commencer à regarder ici. Quant au type de credentials requis, ça dépend de l'entreprise. Il peut s'agit d'identifiants Windows, d'un Active Directory ou encore autre chose, il te faudra demander à tes responsables.
Point subsidiaire, si tu as l'occasion de revenir dessus, ou pour plus tard : tu peux découper une longue fonction en unités logiques plus petites. Exemple : récupérer le chemin de fichier, récupérer le fichier, extraire les liens, télécharger les fichiers des liens, créer le nouveau contenu, créer le nouveau fichier à partir de l'ancien fichier et du nouveau contenu, sauvegarder le nouveau fichier. De cette manière, tu pourras isoler les différents problèmes.
Effectivement, j'ai mis le code que j'ai dans mes fichiers sur Codepen et cela m'affiche le formulaire de connexion pour se connecter à l'intranet, j'ai donc essayé ceci :Les valeurs de username et password sont stockées en dur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(link); NetworkCredential myCredentials = new NetworkCredential(username, password); request.Credentials = myCredentials; request.AllowAutoRedirect = true; request.Method = "GET"; HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Le problème est que j'ai toujours le même résultat (l'identification ne doit pas être réalisée correctement).
il manque peut-être le nom de domaine (comme c'est interne) ou tu peux utiliser les crédits de la session actuelle cf https://stackoverflow.com/questions/...epoint-library
J'ai cette ligne dans mes fichiers (avec un url différents pour chaque fichiers) :
Je devrai pouvoir simuler un post avec les logins utilisateur depuis mon programme ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part <form name="Form1" method="post" action="login.aspx?service=http%3a%2f%2fapplnet.fiducial.fr%2fGetContenu%2fPageLogin.aspx%3fReturnUrl%3d%252fGetContenu%252fDownload.aspx%253fp1%253d1a4cd4a2-3987-4df1-be29-c0238cee790f%2526amp%253bp2%253d4%2526amp%253bp5%255d1%7526amp%253bp6%253dNOPUB" id="Form1">
Et comment je peux trouver l'url à mettre pour POST ?
tu as l'adresse de login dans l'url indiqué après le mot clé service et tu vois que redirigera ensuite (mot clé ReturnUrl) vers la page de téléchargement (download.aspx?......)
après "décodage" des caractères:
Code : Sélectionner tout - Visualiser dans une fenêtre à part http://applnet.fiducial.fr/GetContenu/PageLogin.aspx
Code : Sélectionner tout - Visualiser dans une fenêtre à part GetContenu/Download.aspx?p1=1a4cd4a2-3987-4df1-be29-c0238cee790f&p2=4&p5=1&p6=NOPUB
Je n'ai pas l'impression que ça marche avec la méthode post, car je récupère toujours les mêmes fichiers de 18ko, en revanche, j'ai essayé de placer comme URL de post la page de connexion au portail intranet et j'ai eu en message de retour : Connexion réussie, donc est ce qu'il y a moyen de faire quelque chose à partir de ceci ou alors vaudrait-il mieux que je récupère le cookie qui sert d'authentification ?
Tu peux tenter dans un premier temps de lancer la requête de téléchargement à la suite de celle de logon. Si ça ne marche pas, récupérer et utiliser les infos de cookies
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager