Google Docs API を利用するアプリケーションがあります。最近まで、HTTP エンドポイントを使用したアップロードは正常に機能していました。最近、アップロードが突然エラーになるようになりました。セッションを作成するための最初の呼び出し (再開可能な URL を返す) は正常に機能し、再開可能な URL を返します。その後、ファイルの内容を再開可能な URL に送信しようとすると、503 がスローされます。
エラーをスローするコードの関連部分は次のとおりです。
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");
上記のコードは、再開可能な URL を取得するためのセッションの作成と、再開可能な URL へのファイル コンテンツのポストの両方に使用されます。
これは、このAndroid アクティビティの一部です。リポジトリのクローンを作成するだけで問題を再現するのはおそらく非常に簡単なので、元のアクティビティへのリンクを含めます。コードは 1 年間変更されていません。
これを引き起こす何かが最近変更されましたか?
コードを変更しておらず、同じコードが現場の他のいくつかのアプリケーションで使用されているため、今のところ Google ドライブの API を使用する必要は避けたいと思います。