2014-06-25 29 views
11

Jak używać WebClient.DownloadFile z uwierzytelnianiem skrótu i ​​ciągiem zapytania?Jak korzystać z WebClient.DownloadFile z uwierzytelnianiem digest i ciągiem zapytania

Kiedy próbuję go użyć, otrzymuję odpowiedź 401.

To jest dziennik błędów Apache:

[Tue Jun 24 17:31:49 2014] [error] [client x.x.x.x] Digest: uri mismatch - </file-1.php> does not match request-uri </file-1.php?since=1403587422> 

Oto jak próbuję pobrać plik:

Uri uri = new Uri("http://example.com/file-1.php?since=1403587422"); 
WebClient webClient = new WebClient(); 
CredentialCache credentialCache = new CredentialCache(); 
credentialCache.Add(
    new Uri(uri.GetLeftPart(UriPartial.Authority)), 
    "Digest", 
    new NetworkCredential("username", "password") 
); 
webClient.Credentials = credentialCache; 
webClient.DownloadFile(uri, file.OutputFile); 
+0

Może http://stackoverflow.com/questions/3172510/ how-can-i-do-digest-authentication-with-httpwebrequest – Brian

+0

Masz otrzymać odpowiedź 401 po żądaniu. Odpowiedź 401 zawiera nagłówek WWW-Authenticate, który należy obliczyć w odpowiedzi na wezwanie. Sprawdź, jak działa szyfrowany protokół uwierzytelniania. http://technet.microsoft.com/en-us/library/cc780170(v=ws.10).aspx –

+0

@MikeHixson Dostaję 401 dobrze, jego żądanie po tym, który nie powiedzie się. – Petah

Odpowiedz

1
WebClient webCl = new WebClient(); 
webCl.Credentials = new NetworkCredential("username", "Password"); 
webCl.DownloadFile(file download URL, fil save path with FileName);