2013-06-04 3 views
6

Ich habe Anwendungen, die die Google Docs API nutzen. Bis vor kurzem funktionierten Uploads mit den HTTP-Endpunkten einwandfrei. In letzter Zeit hat das Hochladen plötzlich zu einem Fehler geführt. Der erste Aufruf zum Erstellen einer Sitzung (mit der die fortsetzbare URL zurückgegeben wird) funktioniert problemlos und gibt eine fortsetzbare URL zurück. Der Versuch, dann die Dateiinhalte an die fortsetzbar URL senden wirft ein 503.Die Google Docs API gibt beim Hochladen einer Datei einen 503-Dienst nicht verfügbar zurück. Hat sich etwas verändert?

Der relevante Teil des Codes den Fehler wirft dies:

 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"); 

Der obige Code wird sowohl für die Erstellung der Sitzung zu gewöhnen die fortsetzbare URL sowie das Posten von Dateiinhalten in der fortsetzbaren URL.

Das ist Teil von this Android-Aktivität. Ich schließe einen Link zu der ursprünglichen Aktivität ein, da es wahrscheinlich sehr einfach wäre, das Problem durch einfaches Klonen des Repositories zu reproduzieren. Der Code ist seit einem Jahr unberührt geblieben.

Hat sich in letzter Zeit etwas geändert, das das verursachen würde?

Ich möchte vermeiden, Google Drive APIs für jetzt zu verwenden, da ich keinen Code geändert habe und der gleiche Code in einigen meiner anderen Anwendungen in diesem Bereich verwendet wird.

+0

Haben Sie ein anderes Google-Konto ausprobiert? Seit ein oder zwei Monaten haben mein Konto (und anscheinend auch einige andere Nutzer) 503 ServiceUnavailable-Fehler von GData Google-Diensten zurückgegeben. In meinem Fall sind YouTube und Google Play Filme vollständig gesperrt -> https://productforums.google.com/forum/?fromgroups#!topic/youtube/IsDSzuY8NbE Die rohe Antwort von der YouTube/Movies-API ist "ServiceNotAvailable" mit einem Art von "GData" und ein Statuscode von 503 :( –

+0

My Fiddler Spur ist in dieser Ausgabe: https://code.google.com/p/gdata-issues/issues/detail?id=4597 –

Antwort

0

Eines der nervigsten "Features" ist die undokumentierte Rate Limit beim Anfordern von Bildern, deren jede Anfrage authentifiziert werden muss. Das Ratenlimit scheint bei etwa 10/s zu liegen.

0

Möglicherweise verwenden Sie Google API v2, das jetzt veraltet ist. Lesen Sie den folgenden Beitrag:

https://developers.google.com/google-apps/documents-list/terms 
Verwandte Themen