0

谷歌的官方文档告诉我们:

 The download URL for files looks something like this:
 https://doc-04-20-docs.googleusercontent.com/docs/secure/m7an0emtau/WJm12345/YzI2Y2ExYWVm?h=16655626&e=download&gd=true

它还告诉我们文档条目 xml 的完成方式如下:

<entry ...
...
<content type='application/zip' src='https://doc-0s-84-docs.googleusercontent.com/docs/securesc/4t...626&amp;e=download&amp;gd=true'/>
...
</entry>

但是无论我尝试使用 gdata java 客户端库,我都无法检索该 url。我尝试了所有 .get* Link *() 方法和 .getContent()。有人遇到这个问题并找到解决方案吗?我还尝试获取媒体源并处理其输入流。

最终结果是在我的 java 应用程序服务器 (GAE) 上获取文件的内容(文件是自定义格式的二进制文件),以将其发送给可以解析和查看它的客户端。

干杯,

Ricola3D

4

1 回答 1

0

最后我自己找到了解决方案,看来我只是用错了。如果有一天其他人需要,这是代码!

URL entryUrl = new URL("https://docs.google.com/feeds/default/private/full/"+mydocumentid);
DocumentEntry mydocument = client.getEntry(entryUrl, DocumentEntry.class);
if (mydocument!=null) { // if we can read the document
  MediaContent content = (MediaContent) mydocument.getContent();
  //URL exportUrl = new URL(content.getUri()); // download url
  MediaSource source = client.getMedia(content);
  InputStream inStream = null;
  OutputStream outStream = null;
  try {
    inStream = source.getInputStream();
    outStream = resp.getOutputStream();
    int c;
    while ((c = inStream.read()) != -1) {
      outStream.write(c); // copy the stream, by 1byte per 1byte is very slow !
    }
  } finally {
    if (inStream != null) {
      inStream.close();
    }
    if (outStream != null) {
      outStream.flush();
      outStream.close();
    }
  }
于 2012-07-19T14:36:54.063 回答