I am trying to download a file from a C # application. I tried two different methods, but both give the same answer: "The remote server responded with an error: (401)" Unauthorized ".
I am sure this is an account (because of 401). If I go to the URL from the browser and enter the same credentials, the file will load just fine. In "Attempt 2" (below), for type authtype, I tried: NTLM, Basic, Negotiate and Digest with no luck.
Does anyone see what I can do wrong here?
Thanks for the help!
Attempt 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");
Attempt 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();
source share