我几个月来一直在 Java 和 Objective-c 中使用 Google Drive SDK,今天突然(2013 年 7 月 10 日)使用 java api(google-api-client-1.15.0-rc.jar 和版本)插入新文件1.14) 在 FileInsert.execute() 上执行失败。这是我一直在使用的静态辅助方法(基本上是 DrEdit 教程的副本):
public static File insertFile(Drive driveService, String title, String description,
String parentId, String mimeType, java.io.File content) {
System.out.println("<GDrive insertFile> start");
File body = new File();
body.setTitle(title);
body.setDescription(description);
body.setMimeType(mimeType);
if (parentId != null && parentId.length() > 0) {
body.setParents( Arrays.asList(new ParentReference().setId(parentId)) );
}
Insert fileInsert = null;
System.out.println("<GDrive insertFile> before content attache");
if (content != null && content.length() > 0) {
FileContent mediaContent = new FileContent(mimeType, content);
try { fileInsert = driveService.files().insert(body, mediaContent); }
catch (IOException e) { e.printStackTrace(); }
} else {
try { fileInsert = driveService.files().insert(body); }
catch (IOException e) { e.printStackTrace(); }
}
try {
if (fileInsert != null) {
System.out.println("<GDrive insertFile> before execute");
File file = fileInsert.execute();
System.out.println("<GDrive insertFile> file posted " + file.getId());
return file;
} else return null;
} catch (IOException e) {
System.out.println("An error occured: " + e);
return null;
}
}
显然 System.out 用于定位问题,它在“执行前”挂断。我找不到任何关于 Google 服务器问题或 API 使用方式更改的帖子。以下是应用程序在 20 - 180 秒后失败时记录的错误消息:
An error occured: java.net.SocketTimeoutException: Read timed out
Exception in thread "main" java.lang.NullPointerException
谢谢。