从昨天开始,代码在几个月内没有更改,我们在使用Java Drive API复制文件时出错。
我们使用方法:
service.files().copy(originalID, copiedFile).execute();
并获得:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 500 OK
{
"code" : 500,
"errors" : [ {
"domain" : "global",
"message" : "Internal Error",
"reason" : "internalError"
} ],
"message" : "Internal Error"
}
完整的代码是:
public File copiarArchivo(Drive service, String originalID, String tituloCopia) {
File copiedFile = new File();
copiedFile.setTitle(tituloCopia);
try {
return service.files().copy(originalID, copiedFile).execute();
} catch (IOException e) {
System.out.println("Un error ocurrio: " + e);
}
return null;
}
云端硬盘服务已初始化,我们的原始ID不为空。
答案 0 :(得分:0)
由于这是一个内部错误,它可能会随着时间自动解决。谷歌的一些东西不起作用,你可能没事。许多人似乎都遇到了这个问题,然后它就消失了。
这不是您遇到的完全相同的问题,但它是一个500错误,会自动解决:
https://code.google.com/p/gdata-issues/issues/detail?id=6352
答案 1 :(得分:0)
您似乎正在使用Spreadsheets API使用的旧KeyID。使用Drive API复制文件时不再允许该ID。您需要获取新的FileID并在复制句中使用它而不是旧的。
您可以在此示例后获取该新ID:
public String getNewFileID(Drive service, String oldSpreadsheetsKeyID){
File file = service.files().get(oldSpreadsheetsKeyID).execute()
String alternateLink = file.getAlternateLink();
String[] aux1 = alternateLink.split("/spreadsheets/d/");
String[] aux2 = aux1[1].split("/edit?");
String newFileID = aux2[0];
return newFileID;
}
这将从完整的URL恢复ID。虽然这可能是一种更有效的分割URL的方法。您可以使用此ID制作副本。