我的应用程序使用了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。
这是this Android活动的一部分。我包含了原始活动的链接,因为通过简单地克隆存储库可能很容易重现问题。该守则保持不变一年。
最近有什么改变会引起这种情况吗?
我想避免现在使用Google Drive的API,因为我没有更改任何代码,而且我在该领域的其他几个应用程序中使用了相同的代码。
答案 0 :(得分:0)
最烦人的“功能”之一是请求图像时未记录的速率限制,每个请求必须经过身份验证。速率限制似乎约为10 / s。
答案 1 :(得分:0)
您可能正在使用截至目前已弃用的Google API v2。阅读以下帖子:
https://developers.google.com/google-apps/documents-list/terms