2014-06-25 20 views
11

Come utilizzare WebClient.DownloadFile con l'autenticazione digest e una stringa di query?Come utilizzare WebClient.DownloadFile con autenticazione digest e una stringa di query

Quando provo ad usarlo ottengo una risposta 401.

Questo è il log degli errori di 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> 

Ecco come provo a scaricare il file:

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

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

+0

Si suppone di ottenere una risposta 401 dopo la richiesta. La risposta 401 contiene l'intestazione WWW-Authenticate di cui è necessario calcolare la risposta alla verifica. Scopri come funziona il protocollo di autenticazione digest. http://technet.microsoft.com/en-us/library/cc780170(v=ws.10).aspx –

+0

@MikeHixson Ottengo la multa 401, la sua richiesta dopo quella che fallisce. – Petah

risposta

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