Desidero scaricare qualcosa utilizzando un oggetto WebClient in C#, ma il dominio di download richiede l'accesso. Come posso accedere e mantenere i dati della sessione tramite WebClient? So come pubblicare i dati con WebClient.Come accedere a un sito con WebClient?
risposta
Se il problema riscontrato è possibile autenticarsi ma non è possibile mantenere qui il cookie di autenticazione è una versione di WebClient compatibile con i cookie.
private class CookieAwareWebClient : WebClient
{
public CookieAwareWebClient()
: this(new CookieContainer())
{ }
public CookieAwareWebClient(CookieContainer c)
{
this.CookieContainer = c;
}
public CookieContainer CookieContainer { get; set; }
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
var castRequest = request as HttpWebRequest;
if (castRequest != null)
{
castRequest.CookieContainer = this.CookieContainer;
}
return request;
}
}
EDIT: Il link che mi hai dato utilizza l'autenticazione HTTP POST forme con, non ho il tempo di camminare anche se, ma almeno ti dà un inizio con Google.
ho trovato questo. ma cosa devo fare? devo autenticarmi tramite httpwebrequest o cosa? – MonsterMMORPG
Dipende dal sistema di autenticazione utilizzato dal sito che si sta connettendo. Vedi alcune delle altre risposte sui suggerimenti per l'autenticazione di –
Vorrei che questo post includesse un esempio sull'effettivo processo di autenticazione stesso. – Shimmy
Dai un'occhiata all'utilizzo della proprietà Credentials. Per esempio. se viene utilizzata l'autenticazione di base, sarà necessario impostare la proprietà su un'istanza di NetworkCredential con il nome utente e la password corretti.
Il sample indicava come utilizzare le credenziali utente attualmente connesse per la richiesta.
non funziona :( – MonsterMMORPG
Okey, vedo. Il server utilizza l'autenticazione basata su form, che richiede l'inserimento del nome utente e della password nell'URL dell'azione specificato nella pagina di accesso html. È inoltre necessario utilizzare un contenitore di cookie per ricevere l'autenticazione cookie che viene fornito con la risposta a quel post. –
@MonsterMMORPG 'DoesNotWorkNullReferenceException' – C4u
Che tipo di meccanismo di autenticazione richiede il server? Basic, Forms, Windows/NTLM? –
lol ho risolto il problema aggiungendo valori maunally guardando dai cookie firefox :) webClient.Headers.Add ("Cookie", "PHPSESSID = xxxxxxx; mosesuser = xxxxxxx;"); – MonsterMMORPG
Quali valori? Intendi il vero auth cookie? Ricorda che il valore probabilmente scadrà e non può essere riutilizzato in un secondo momento. –