2013-06-04 11 views
6

Ho applicazioni che utilizzano l'API di Google Documenti. Fino a poco tempo fa, i caricamenti con gli endpoint HTTP funzionavano correttamente. Recentemente, il caricamento ha improvvisamente iniziato a generare errori. La prima chiamata per creare una sessione (che restituisce l'URL ripristinabile) funziona correttamente e restituisce un URL riassumibile. Il tentativo di inviare il contenuto del file all'URL resumable getta una 503.L'API di Google Documenti restituisce un servizio 503 non disponibile durante il caricamento di un file. Qualcosa è cambiato?

La parte rilevante del codice di gettare l'errore è questo:

 URL url = new URL(resumableFileUploadUrl); 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.addRequestProperty("client_id", OAuth2Client.CLIENT_ID); 
     conn.addRequestProperty("client_secret", OAuth2Client.CLIENT_SECRET); 
     conn.setRequestProperty("Authorization", "OAuth " + GetAuthToken()); 

     conn.setRequestProperty("X-Upload-Content-Length", String.valueOf(fileContents.length())); //back to 0 
     conn.setRequestProperty("X-Upload-Content-Type", "text/xml"); 
     conn.setRequestProperty("Content-Type", "text/xml"); 
     conn.setRequestProperty("Content-Length", String.valueOf(fileContents.length())); 
     conn.setRequestProperty("Slug", fileName); 

     if(isUpdate) 
     { 
      conn.setRequestProperty("If-Match", "*"); 
      conn.setRequestMethod("PUT"); 
     } 
     else 
     { 
      conn.setRequestMethod("POST"); 
     } 

     conn.setRequestProperty("GData-Version", "3.0"); 
     conn.setRequestProperty("User-Agent", "GPSLogger for Android"); 


     conn.setUseCaches(false); 
     conn.setDoInput(true); 
     conn.setDoOutput(true); 

     DataOutputStream wr = new DataOutputStream(
       conn.getOutputStream()); 
     wr.writeBytes(fileContents); 
     wr.flush(); 
     wr.close(); 

     int code = conn.getResponseCode(); 
     newLocation = conn.getHeaderField("location"); 

Il codice di cui sopra è utilizzato sia per la creazione della sessione per ottenere l'URL di ripristino e la pubblicazione dei contenuti dei file sull'URL di ripresa.

Quale fa parte dell'attività this Android. Sto includendo un collegamento all'attività originale in quanto sarebbe probabilmente abbastanza semplice riprodurre il problema semplicemente clonando il repository. Il codice è rimasto intatto per un anno.

Qualcosa è cambiato di recente che potrebbe causare questo?

Vorrei evitare di dover utilizzare le API di Google Drive per ora poiché non ho modificato alcun codice e lo stesso codice viene utilizzato in alcune delle mie altre applicazioni sul campo.

+0

Hai provato un altro account Google? Da un mese o due anni fa, il mio account (e apparentemente alcuni altri) ha restituito 503 errori ServiceUnavailable dai servizi GData di Google. Nel mio caso, YouTube e Google Play Film sono completamente eliminati -> https://productforums.google.com/forum/?fromgroups#!topic/youtube/IsDSzuY8NbE La risposta non elaborata dall'API YouTube/Film è "ServiceNotAvailable" con un tipo di "GData" e un codice di stato di 503 :( –

+0

La mia traccia di Fiddler è in questo numero: https://code.google.com/p/gdata-issues/issues/detail?id=4597 –

risposta

0

Una delle "funzionalità" più fastidiose è il limite di velocità non documentato quando si richiedono immagini, ciascuna delle quali deve essere autenticata. Il limite di frequenza sembra essere intorno a 10/s.

0

È possibile che si stia utilizzando l'API di Google v2, che è deprecata sin d'ora. Leggi il seguente messaggio:

https://developers.google.com/google-apps/documents-list/terms 
Problemi correlati