Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Il WebClient non funziona se l'user agent non è impostato: è normale?
Forum - C# / VB.NET - Il WebClient non funziona se l'user agent non è impostato: è normale?

Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 22:46
Lunedì, 15/04/2013
Ciao a tutti, sto scrivendo un'applicazione in VB.NET in cui uso il webclient per scaricare dei files tramite il metoto DownloadFileAsync. Ho notato che quando cerco di scaricare un file di tipo DTD (doctype definition) ottengo un errore 500 del server, mentre con files html e immagini non succede. Dato che questi files DTD nel browser si aprono correttamente, ho pensato che il problema si potesse risolvere dichiarando l'user agent, così ho usato quello che usava chrome per caricare le pagine, cioè ho aggiunto questa riga prima di iniziare il download:
Codice sorgente - presumibilmente C# / VB.NET

  1. w.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31")


dove "w" è la mia istanza della classe WebClient. In effetti il problema si è risolto, però vorrei sapere:
1)come mai è necessario solo con questo tipo di files?
2)questa soluzione che ho trovato quasi per caso è corretta? devo per caso dichiarare un user agent diverso?
Grazie ;)

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 20:15
Martedì, 16/04/2013
Dilemma risolto, scusate il disturbo ;)
Ho trovato nella pagina http://msdn.microsoft.com/it-it/library/system.net.webclie ...:
Testo quotato


Per impostazione predefinita le intestazioni HTTP non vengono inviate dall'istanza WebClient. Se la richiesta richiede un'intestazione opzionale, è necessario aggiungere l'intestazione all'insieme Headers. Ad esempio, per mantenere le query nella risposta, è necessario aggiungere un'intestazione dell'agente utente. Inoltre, i server posso restituire 500 (Errore interno del server) se l'intestazione dell'agente utente è mancante.


Come user agent userò quindi quello dell'esempio. Grazie comunque, potete chiudere ;)

PM Quote