我想使用最新的Java SDK利用Google云端硬盘的新缩略图功能。 但我得到的只是一个糟糕的请求响应。 有人可以发布这个功能的工作示例吗? 我一直只是设置mimetype和Base64编码的图像数据,但这不起作用 - 至少对于file.insert和file.patch。
更新: 这是我的(简化)代码段。它没有新的缩略图工作正常工作 - 编码的图像数据看起来还不错:
...
Drive drive = getDrive(account);
File file = new File();
file.setTitle(name);
...
HTTPResponse response = urlFetch.fetch(new URL(imageUrl));
String encodedImage = new String(Base64.encodeBase64(response.getContent()));
Thumbnail thumbnail = new Thumbnail();
thumbnail.setImage(encodedImage);
thumbnail.setMimeType("image/png");
file.setThumbnail(thumbnail);
file = drive.files().insert(file).execute();
这是回复:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 OK
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Bad Request",
"reason" : "badRequest"
} ],
"message" : "Bad Request"
}
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:143)
at com.google.api.client.googleapis.json.GoogleJsonResponseException.execute(GoogleJsonResponseException.java:187)
at com.google.api.client.googleapis.services.GoogleClient.executeUnparsed(GoogleClient.java:279)
at com.google.api.client.http.json.JsonHttpRequest.executeUnparsed(JsonHttpRequest.java:207)
答案 0 :(得分:0)
缩略图需要编码为Base64 UrlSafe字符串。 使用
String encodedImage = Base64.encodeBase64URLSafeString(response.getContent());
对图像进行编码解决了问题。