J'essaie de télécharger un fichier à partir d'une application C#. J'ai essayé deux méthodes différentes, mais les deux produisent la même réponse: "Le serveur distant a renvoyé une erreur: (401) non autorisé."Problème lors du téléchargement d'un fichier
Je suis assez sûr que c'est un problème d'identification (à cause de la 401). Si je navigue vers l'url à partir d'un navigateur, et entrez les mêmes informations d'identification fournies, le téléchargement du fichier est très bien. Dans "Attempt 2" (ci-dessous), pour authtype, j'ai essayé: NTLM, Basique, Négocier et Digérer sans aucune chance.
Est-ce que quelqu'un voit ce que je peux faire mal ici?
Merci pour l'aide!
Tentative 1:
string username = "username";
string password = "password";
string domain = "domain";
string url = @"http://LiveLinkInstance.com/livelink/llisapi.dll/999999/WordDocument.docx?func=doc.Fetch&nodeid=999999&ReadOnly=True&VerNum=-2&nexturl=/livelink/llisapi.dll?func=ll&objId=888888&objAction=browse&viewType=1";
// Create an instance of WebClient
WebClient client = new WebClient();
client.Proxy = null;
client.Credentials = new System.Net.NetworkCredential(username, password, domain);
client.DownloadFile(new Uri(url), @"C:\FileDownloads\test.txt");
Tentative 2:
string username = "username";
string password = "password";
string domain = "domain";
string url = @"http://LiveLinkInstance.com/livelink/llisapi.dll/999999/WordDocument.docx?func=doc.Fetch&nodeid=999999&ReadOnly=True&VerNum=-2&nexturl=/livelink/llisapi.dll?func=ll&objId=888888&objAction=browse&viewType=1";
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
string credentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(domain + "\\" + username + ":" + password));
wr.Headers.Add("Authorization", "Basic " + credentials);
CredentialCache cc = new CredentialCache();
cc.Add(new Uri(url), "NTLM", new NetworkCredential(username, password, domain));
wr.Credentials = cc;
Stream str = ws.GetResponseStream();
Dans la tentative n ° 2, le paramètre manuel de l'en-tête semble redondant (même conflictuel) avec l'utilisation de CredentialCache. Ensuite, essayez et devinez les paramètres (avec/sans domaine, Basic/Digest/etcc). Ou, mieux encore, essayez d'utiliser quelque chose comme Fiddler ou Httpwatch pour comprendre quel est le schéma d'authentification utilisé dans le navigateur. –
Amitay, merci. En fait, j'ai essayé avec et sans ça. Je suis d'accord. C'est totalement redondant. Je pense que Fiddler est une excellente idée. Je vais essayer. – RepDetec