Domanda

Bene, ho passato tre giorni buoni a provare questo, ecco lo scenario:

Voglio scaricare un file '.csv' da Google e quindi fare cose con i dati dal file. È per un'applicazione console Win32. Ho quest'ultimo in basso, non riesco proprio a capire come scaricare il file. Ho sentito parlare di libcurl, curlpp, ptypes, ho fatto il mio, usando semplicemente .NET api, e mi è stato detto un sacco di volte:

  

... è solo una richiesta GET

Bene, va bene così, ma devo mancare qualcosa perché sembra che tutti siano appena nati sapendo come farlo. Ho cercato libri per cercare di capirlo e ho persino avuto un grosso problema con LNKerrors dopo aver viaggiato lungo la strada con "The Art of C ++" per un po.

Detto questo, ho imparato MOLTO da questo, ma a questo punto voglio solo sapere come farlo. L'API per C ++ è gravemente carente, non è stato trovato alcun codice di esempio. I tutorial online sono quasi inesistenti. E nessun libro là fuori sembra pensare che sia importante.

Qualcuno può lanciarmi una zattera di salvataggio? Sono un uomo al limite qui.

modifica

Di " da Google " Voglio dire che voglio scaricare un file .csv che ospitano. Un esempio può essere trovato qui.

È stato utile?

Soluzione

Dovresti essere in grado di piegarlo alla tua volontà.

Ora che ho un po 'risposto alla tua domanda. Perché C ++ Niente contro la lingua, ma scegli la lingua migliore per il lavoro. Perl, PHP e Python (e ne sono sicuro di più) hanno tutti un'ottima documentazione e supporto su questo tipo di operazione.

In perl (quello che conosco) sono solo circa 3-5 righe di codice.

Altri suggerimenti

Perché non usare semplicemente ciò che è già lì?

UrlDownloadToFile ()

Dato che sei sulla piattaforma Win32, ce n'è una libary integrata che puoi usare per implementare una richiesta GET in un modo relativamente semplice: WinInet, che fa parte dell'SDK Win32. Il riferimento di base per WinInet è disponibile su MSDN.

Tieni presente che ci sarà un po 'di slittamento avanti se non hai familiarità con l'API Win32. Esiste un blocco abbastanza utile di esempio di codice qui

Riceverai errori del linker se non aggiungi il riferimento della libreria appropriato al tuo progetto. Sembra che tu abbia già imparato alcune lezioni lì, quindi continuerò così, ma assicurati che troverai riferimenti sia alle librerie che ai file di intestazione che ti serviranno nella documentazione di Win32 (devi solo sapere dove la pagina per cercarla).

Non puoi farlo con la libreria standard. Dal momento che è win32, puoi seguire il consiglio di Paul Keister.

Ma dai un'occhiata a libcurl e, dato che sei in C ++, ti consiglio POCO è anche molto utile. Sono strumenti molto utili!

Un'altra opzione è WinHTTP , che viene fornito anche con Windows.

> nessun codice di esempio da trovare

???

Dozzine di campioni sono stati pubblicati per 15 anni .. Vedi api ng news: //comp.os.ms-windows.programmer.win32 (campioni in C)

(COM, INET, ecc.)

Anch'io ho cercato una buona libreria http per C ++, ma non ho trovato la libreria "perfetta". Boost.Asio è fantastico ma abbastanza basso per una semplice libreria http (sebbene i esempi di client http sono un buon inizio). La C ++ Networking Library * (cpp-netlib) sembra essere sulla buona strada, costruendo un livello superiore -piano api sopra asio, ma non è molto maturo. Dai un'occhiata a esempio di http_client .

O scriverò i miei wrapper su asio o estenderò (e contribuirò) a cpp-netlib a meno che non riesca a trovare un'opzione migliore.

(BTW libcurl non è non un'opzione migliore per me. È un'API molto più grande di quanto io voglia e molto ingombrante per qualcosa come un client http, specialmente in C ++. Non fraintendetemi, è un'ottima libreria ma non è adatta per un semplice client http.)

C ++ in realtà non ha un'API in sé. Per eseguire una richiesta GET, il programma deve aprire una connessione socket TCP al sito in questione e inviare le informazioni nel socket per conformarsi alla specifica HTTP, vedere qui . Probabilmente ci sono un certo numero di librerie che potresti trovare utili per questo, ad esempio, puoi guardare a cosa usa il programma open source wget. Se lo stai codificando da solo, sarebbe utile utilizzare uno strumento di fiuto dei pacchetti. È possibile visualizzare esattamente ciò che il browser invia al server Web per recuperare il file e inviare esattamente quel messaggio. Non è troppo difficile, ma è piuttosto difficile. TCP è inizialmente una curva di apprendimento piuttosto grande.

A proposito, cosa intendi con " da google? "

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top