Oppure

Loading
15/04/13 20:46
GN
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:
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 ;)
aaa
16/04/13 18:15
GN
Dilemma risolto, scusate il disturbo ;)
Ho trovato nella pagina msdn.microsoft.com/it-it/library/…:
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 ;)
aaa