0

Google の公式ドキュメントには次のように書かれています。

 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) に戻し、それを解析して表示できるクライアントに送信します。

乾杯、

リコラ3D

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 に答える