我正在使用驱动SDK作为我的下载应用程序,根据文档,我必须使用files.get()查询文件元数据,我在这里执行:
File remoteFile = this.driveClient.files().get(this.remoteMediaId).execute();
Run Code Online (Sandbox Code Playgroud)
我给出的响应包含所有描述的元数据,包括downloadUrl:
{
"alternateLink" : "https://docs.google.com/file/d/0B9G3K3KUUcIISUdXMHkycUNFLVE/edit?usp=drive_web",
"createdDate" : "2013-04-29T21:32:06.009Z",
"downloadUrl" : "https://doc-04-9o-docs.googleusercontent.com/docs/securesc/kgbtvvv26q246qm8m1k4g2in1v7bhclv/e41n570nep6dionm41b8g25ennqqspmh/1367863200000/14985545053951403951/14985545053951403951/0B9G3K3KUUcIISUdXMHkycUNFLVE?h=16653014193614665626&e=download&gd=true",
...
Run Code Online (Sandbox Code Playgroud)
然后,我使用提供的下载链接为该文件发出http请求:
HttpResponse downloadResponse = null;
try {
log.info(downloadUrl);
log.info(downloadUrl.equals(remoteFile.getDownloadUrl()));
downloadResponse = this.driveClient.getRequestFactory()
.buildGetRequest(new GenericUrl(downloadUrl))
.execute();
...
Run Code Online (Sandbox Code Playgroud)
大多数文件的响应是404,但有些工作.如果我根据文档运行curl请求,我也会获得404.
curl -v -H 'Authorization: Bearer ya29.***********...' 'https://doc-04-9o-docs.googleusercontent.com/docs/securesc/kgbtvvv26q246qm8m1k4g2in1v7bhclv/e41n570nep6dionm41b8g25ennqqspmh/1367863200000/14985545053951403951/14985545053951403951/0B9G3K3KUUcIISUdXMHkycUNFLVE?h=16653014193614665626&e=download&gd=true'
* About to connect() to doc-04-9o-docs.googleusercontent.com port 443 (#0)
* Trying 74.125.239.140...
* connected
* Connected to doc-04-9o-docs.googleusercontent.com (74.125.239.140) port 443 (#0)
...
> GET /docs/securesc/kgbtvvv26q246qm8m1k4g2in1v7bhclv/e41n570nep6dionm41b8g25ennqqspmh/1367863200000/14985545053951403951/14985545053951403951/0B9G3K3KUUcIISUdXMHkycUNFLVE?h=16653014193614665626&e=download&gd=true HTTP/1.1
> User-Agent: curl/7.27.0
> Host: doc-04-9o-docs.googleusercontent.com
> Accept: */*
> Authorization: Bearer …Run Code Online (Sandbox Code Playgroud)