5

Sto lavorando a un'app Android che utilizza gdata-java-client per scaricare documenti solo per la visualizzazione. Finora ho un'applicazione che si autentica con i servizi e visualizza un elenco di documenti dell'utente. Quando l'utente seleziona un documento, viene eseguita un'altra query per i documenti stessi. Una richiesta di file txt, html, rtf e doc funziona bene, tuttavia quando richiedo un foglio di calcolo in formato .csv o .xsl il risultato è inaspettato.Download di fogli di calcolo Fogli Google da Google Drive su Android

Sto utilizzando un oggetto HTTPResponse per archiviare il risultato di un HTTPRequest. Quando richiedo un documento in formato .csv o .xsl, il metodo HTTPResponse.parseAsString() produce un'intera pagina html che sembra essere la home page di Google Documenti. Sembra strano, ma il risultato è l'html effettivo per la pagina di accesso. L'HTTPResponse.getStatusMessage restituisce un 200.

Sembra che manchi qualcosa di semplice qui. Esiste un'altra proprietà di HTTPResponse che contiene i dati .csv?

Sono abbastanza sicuro di utilizzare l'uri corretto per il download di fogli di calcolo perché funziona quando eseguo il download tramite il browser. In ogni caso, ecco un esempio uri:

https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=0AsE_6_YIr797dHBTUWlHMUFXeTV4ZzJlUGxWRnJXanc&exportFormat=csv 

Grazie in anticipo per qualsiasi aiuto :)

+0

Se non ti dispiace, aggiungerei gentilmente il tag "google-api-java-client"? –

+0

@Jason Hall Sono curioso, perché hai modificato così tanto la domanda originale? – JeremyFromEarth

+0

AFAIK l'unica modifica che ho apportato è stata la rimozione di "gdata-java-client" e l'aggiunta di "google-api-java-client" - vedere http://stackoverflow.com/posts/2813470/revisions –

risposta

1

non sono abbastanza familiarità con la Documents List API per sapere, ma dalla tua descrizione suona come si può si è verificato un errore nell'API Elenco documenti e mi sembra un problema importante da risolvere.

Si prega di segnalare il problema al forum Documents List API per aumentare la possibilità che qualcuno esperto sarebbe in grado di esaminare il problema:

http://www.google.com/support/forum/p/apps-apis/label?lid=5c316c702e844c99&hl=en

5

non ho visto il tuo codice, ma certamente il problema è che stai utilizzando ClientLogin e che sono autenticati per l'API dell'elenco documenti utilizzando il servizio "scritto". Tuttavia, poiché l'esportazione di un foglio di calcolo colpirà spreadsheets.google.com, dovrai utilizzare ClientLogin per autenticare il servizio "saggio". Da Java, questo significa che utilizzando la libreria client di fogli di calcolo Java, che è documentato qui: http://code.google.com/apis/documents/docs/3.0/developers_guide_java.html#DownloadingSpreadsheets

Nota la nota etichettato 'Importante' in alto là, che collega qui: http://code.google.com/apis/documents/docs/3.0/developers_guide_java.html#DownloadingSpreadsheetsClientLogin

A quel link , l'utilizzo di un'istanza di SpreadsheetClient è dettagliato.

Buona fortuna :)

+0

Questo mostra API deprecata. – Youngjae

0

E 'il 2017, e c'è un modo completamente nuovo di fare le cose ora. Le API GData, GData come l'API Elenco documenti, ClientLogin e Drive URL di download sono ormai obsolete. Al loro posto ci sono un'API di Drive, un'API Sheets e un modo più nativo di integrazione con le tecnologie Google dalle app Android: lo Google APIs Client Library for Android. C'è anche un Google APIs Client Library for Java se stai facendo lato server invece.

Se si desidera eseguire operazioni documento -orientato su fogli di calcolo, utilizzare lo Google Sheets API e utilizzare la Libreria client sopra riportata. Ora per alcuni esempi ... ecco lo Android quickstart code sample e il più generale Java quickstart code sample per l'API Sheets. Non posso far male a passare lungo il JavaDocs reference for the Sheets API entrambi.L'ultima API di Sheets fornisce funzionalità non disponibili nelle versioni precedenti, ovvero che consentono agli sviluppatori di accedere in modo programmatico a un foglio come se si stesse utilizzando l'interfaccia utente (creare file congelati, eseguire la formattazione delle celle, ridimensionare righe/colonne, aggiungere tabelle pivot, creare grafici, ecc.)

Tuttavia, per eseguire l'accesso file -level, ad esempio nella domanda dell'OP, utilizzare lo Google Drive API. C'è anche un Google Drive API for Android, incluso un docs page specifically on retrieving document contents. Se sei nuovo in questa libreria, ecco lo Drive API Android quickstart sample app e other code samples per iniziare. Ecco anche lo Drive API for Android class reference docs.

Problemi correlati