View Full Version : wininet
MavericK00
06-11-2005, 12:25
Dunque devo scrivere una bella funzioncina per un RSS Aggregator (in c++) che mi permette di scaricare un file xml (immettendo il link di news da un server (chessò yahoo per esempio), salvarlo sul disco e poi passarlo al parser.
Avevo pensato di usare la dll wininet ma volevo sapere se c'era una guida per districarmi nelle numerose funzioni di quella libreria (o magari un consiglio)
Grazie ;)
Dunque devo scrivere una bella funzioncina per un RSS Aggregator (in c++) che mi permette di scaricare un file xml (immettendo il link di news da un server (chessò yahoo per esempio), salvarlo sul disco e poi passarlo al parser.
Avevo pensato di usare la dll wininet ma volevo sapere se c'era una guida per districarmi nelle numerose funzioni di quella libreria (o magari un consiglio)
Grazie ;)
Beh, msdn di solito è il meglio del meglio del meglio per iniziare.
About wininet (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/about_wininet.asp)
Using wininet (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/using_wininet.asp)
E' un bel pacco di informazioni, ma basta sapere che più o meno funzionano come CreateFile (InternetOpenUrl), ReadFile (InternetReadFile) ecc.
Altrimenti prova UrlDowloadToFile se vuoi che faccia tutto windows: devi solo passarlo al parser nel tuo caso.
PS: posso farti un esempio se vuoi
MavericK00
07-11-2005, 20:40
Allora il problema è la funzione InternetReadFile in particolare gli ultimi parametri che gestiscono il buffer....non riesco a far leggere tutto il file bensì mi va in loop perchè molto prob legge ricorsivamente sempre la stessa porzione di file.
Un aiutino sarebbe fantastico :)
A normal read retrieves the specified dwNumberOfBytesToRead for each call to InternetReadFile until the end of the file is reached. To ensure all data is retrieved, an application must continue to call the InternetReadFile function until the function returns TRUE and the lpdwNumberOfBytesRead parameter equals zero.
MavericK00
08-11-2005, 17:11
si l'ho già letto, ora esco dal ciclo....siccome ho impostato la dimensione del buffer a 8000 byte dovrei riuscire tranquillamente a scaricare il file ma....nada
Mi spiego meglio
ho usato questa funzione per copiare il contenuto del buffer in un'altro buffer
strcpy(lpszOutPut, lpszData)
(in quanto se è richiesto dimensione maggiore la alloco)
e qui sono in dubbio: per copiare il contenuto del buffer in un file come faccio?
uso la lib standard <fstream> così?
ofstream file;
file.open("C:/file.txt");
file << *lpszHolding;
file.close();
Ho provato ma mi viene fuori un file di 1k completamente vuoto
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.