Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
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
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
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