java - 为什么 Dropbox 服务器在尝试通过其 API 上传文件时没有响应?

标签 java dropbox

我正在使用官方的 Java 版 Dropbox API。 到目前为止,一切都很顺利。通过 oauth 进行身份验证有效,其他功能(如目录列表)也有效。

现在,我尝试上传这样的文件:

InputStream is = getInputStream();
byte[] bytes = is2Bytes(is); // Gets all bytes "behind" the stream
int len = bytes.length;
api.putFileOverwrite(path, is, len, null);

现在,当我执行此调用时,我的应用程序挂起大约 15 秒,然后抛出异常,表明 Dropbox 服务器没有响应。

所以,首先我询问 Dropbox 支持人员,他们的服务器是否有问题。没有。

然后,我尝试了 putFileOverwrite 方法的参数,发现如果我手动设置 len=0,服务器会响应并创建一个具有正确文件名的 0 字节文件。

作为另一个测试,我手动输入值 len=100(原始文件有 250KB,所以应该没问题)。同样,服务器响应。

那么,出了什么问题?

最佳答案

这一点也不奇怪。由于您使用自制方法is2Bytes,因此 Steam 是空的,因为您读取了所有字节来对它们进行计数。执行此操作的正确方法是知道要发送多少字节或使用内置方法发送文件。

public HttpResponse putFile(String root, String dbPath, File localFile)

关于java - 为什么 Dropbox 服务器在尝试通过其 API 上传文件时没有响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8505978/

相关文章:

java - 尽管权限在 list 中,但需要振动权限

java - 正则表达式删除括号和空格

ios - 不允许应用程序访问 Dropbox 的此 api

javascript - 如何将 Dropbox 中的所有文件保存到我的 HTML 页面

javascript - 使用 Javascript 中的 Dropbox Core API 将文件上传到 Dropbox

multithreading - 为什么 Dropbox 使用这么多线程?

java - 二进制数组的最小相邻交换数

java - Spring Converter 复杂对象

java - 替换java对象中自己的实例

c# - 使用 REST API 列出 Dropbox 文件