Iterrogazione file con VB.net

giovedì 16 ottobre 2003 - 18.14

leandro Profilo | Newbie

Ciao a tutti questo è il mio problema ho fatto un applicazione che scarica un file da internet al link d'esempio www.xxxxx.it/ciccio.zip questo programma scarica questo file lo dezippa e lo installa nella sua directory giusta per fare un upgrade di un software il mio problema sta nel sapere prima di lanciare il download qualìè la data di creazione di questo file in modo da poterla confrontare con quella del hard disk locale e decidere se superiore o no? Su disco locale tipo c:\xxx son già riuscito ad avere informazioni sul file ma su quello remoto non ho la minima idea di come farlo qualcuno ha qualche idea ? penso che sia un bel programmino da far girare a chi ne avvesse bisogno come esempio.
Sicuro di un Vs. aiuto porgo distiti saluti.

freeteo Profilo | Guru

ciao io al momento in vb.net/c# non so come si faccia, ma l'ho fatto in vb6 e penso sia simile.
Quello che devi fare e' farti dare un header dal webserver, che ti dia la data di creazione del file.
io usavo l'ocx inet e facevo una richiesta di header, (non get classica) ma [.Execute , "HEAD"] e poi di tutti mi facevo dare quello che mi serviva con [.GetHeader("Last-modified")] che mi ritonava la data ora del file remoto.

in .net penso che si debba chiedere questo header con la classe webclient.
prova a dare un'occhiata...
ciao

Brainkiller Profilo | Guru

E' esatto,
la soluzione proposta da teo è corretta. Infatti di solito si fa così si fanno richieste particolari HTTP o FTP facendosi restituire la data di creazione del file o di ultima modifica, dopodichè si confronta e si decide se scaricare o meno senza naturalmente scaricare prima tutto il file.
Io però più che sulla data ti consiglierei di fare il controllo sulla dimensione che è più semplice, anche se non sempre una release successiva è più grande di una precedente, magari potevi fare il controllo se file sul server maggiore di file locale allora scarica.
Anche in questo caso per prendere la dimensione devi operare nello stesso modo.
Ciao

David De Giacomi

leandro Profilo | Newbie

Grazie Teo finalmente sembra che ho trovato la soluzione ma siccome sono alle prime armi mi potresti aiutare o magari se hai già qualche esempio che mi possa chiarire le cose per esempio per quando ho capito mi devo procurare ocx inet che trovo su internet giusto ? Poi passo col importarlo nel mio progetto e quì casca l'asino cosa devo chiedere all'ocx nel codice ? ringrazio chiunque mi stia aiutando in questa impresa Ciao e grazie ancora

freeteo Profilo | Guru

studiero' come fare con la classe webclient al momento non so'...
cmq io ti sconsiglio di importare ocx in .net, per mia filosofia prendo solo dal framework o "derivati", non voglio piu usare com etc...

ti faccio avere qualcosa nei prossimi giorni su questo tread
ciao!

leandro Profilo | Newbie

Ciao e grazie buon week !!!

freeteo Profilo | Guru

ho guardato un attimo e una cosa semplice da fare puo essere usare una webrequest in questo modo:

WebRequest richiesta =HttpWebRequest.Create("http://....miofile.zip");
WebResponse risposta = richiesta.GetResponse();
Console.WriteLine("Ultima modifica : " + res.Headers["Last-Modified"]);

prova cosi!
ciao

leandro Profilo | Newbie

Grazie per la bella soluzione ma è sorto un problemino ho importato msinet in Vb.net ma nell'importazione mi dice che non dispongo della lincenza per utilizzarlo come faccio ? Mi sa che se non trovo un suo sostituto per .net devo progettare il tutto con vb6 se sai qualcosa mi fai sapere grazie ciao

leandro Profilo | Newbie

Ciao mi sa che ho frainteso al posto del ocx devo creare un webclient quindi importare nel mio progetto la classe system.????? e poi devo dichiarare le varie webrequest e webresponse nel seguente modo dim webrequest as ?????? abbi pazienza ma Vb.net mi sta facend passare la voglia quanto era bello VB6 Ciao e Grazie ancora

Brainkiller Profilo | Guru

Ciao Leandro,
ti rispondo come sul newsgroup.

Quell'ocx era molto limitato e poco efficiente a mio avviso.
Ora con .NET non c'è stata una sostituzione del compoennte ma c'è
un intero namespace di classi che ti permettono di fare con più granualrità
le stesse operazioni, certo ci vuole un po' di conoscenza base dei sockets e
di pratica. I namespaces sono System.Net.Sockets e System.Net.
Documentati sul Framework SDK.

Quindi l'approccio che hai segnalato e che vuoi seguire è perfetto. Devi fare un po' di pratica.
Ciao

David De Giacomi

leandro Profilo | Newbie

Ciao ho seguito il Vs consiglio il codice che ho scritto è il seguente :
Dim richiesta As WebRequest
Dim risposta As WebResponse
richiesta = HttpWebRequest.Create("http://www.xxxx.it/xxx/xxx.zip")
risposta = richiesta.GetResponse()
MsgBox(risposta.Headers, MsgBoxStyle.Critical)
Ma mi da un errore fermandosi alla riga:
risposta= ......
Mi dice che:
Eccezione non gestita di tipo "System.Net.WebException" in system.dll

Informazioni aggiuntive: Connessione sottostante chiusa: Impossibile risolvere il nome remoto..

Cosa mi potete dire su queto errore mi sapete dare un'altro aiutino so che sono una rottura ma fatelo per il bene di vb.net che non riesco proprio a digerire l'ho acquistato maaa... ne sono ancora molto perplesso grazie e ciao

leandro Profilo | Newbie

ciao Ragazzi ci sono riuscito la mia domanda ora è spontanea io sto provando l'eseguibile su un pc con adsl ma se lo devo utilizzare su un pc con un modem devo attivare la connsessione a internet manualmente o dovrebbe almeno avviare la schermatina di accesso remoto da solo ?
Grazie mille per l'aiuto che mi state fornendo ?

Brainkiller Profilo | Guru

Questo purtroppo non lo so.
Non so se parte automaticamente la finestrella di connessione alla rete.
Cmq se vai su Internet Explorer, menù strumenti->opzioni internet, poi linguetta connessioni e prova ad abilitare la voce: "usa connessione remota se non è disponibile..." forse così ti appare.
Se no devi forzare tu la connessione, e per questo ci sono vari modi, se guardi i Post passati nel forum, puoi vedere come.
ciao

David De Giacomi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5