java - 在java中下载box文件

标签 java download box-api

当我下载文件时,它总是抛出这个异常:

org.apache.http.ConnectionClosedException:Content-Length 分隔消息正文过早结束(预期:210846;收到:0

我的代码:

String fileid=attachment.getBoxfileid();
String sha1=attachment.getSha1();
String filename=attachment.getFilename();

final String clientid=ToolsUtils.getBOXcomConfig().get(ToolsUtils.CLIENTID);
final String clientsecret=ToolsUtils.getBOXcomConfig().get(ToolsUtils.CLIENTSECRET);
BoxOAuthToken authToken=this.boxuploadService.getTokenByClientId(clientid);
BoxClient boxClient=new BoxClient(clientid,clientsecret,null,null,new BoxConfigBuilder().build());
boxClient.authenticate(authToken);
boxClient.addOAuthRefreshListener(new OAuthRefreshListener() {

    @Override
    public void onRefresh(IAuthData authData) {
    boxuploadService.updateBoxAccessToken(clientid,authData.getAccessToken(),authData.getRefreshToken());
            }
    });
BoxDefaultRequestObject obj = new BoxDefaultRequestObject();
obj.getRequestExtras().setIfMatch(sha1);
DownloadFileRequest downloadFileRequest=new DownloadFileRequest(new     BoxConfigBuilder().build(), new BoxJSONParser(new BoxResourceHub()), fileid, obj);
out = response.getOutputStream();
InputStream inputStream=boxClient.getFilesManager().downloadFile(fileid, obj);
byte[] buffer = new byte[1024];
response.setContentType("application/octet-stream" );
response.setHeader( "Content-Disposition", "attachment; filename=\"" + filename + "\"" );

while((readCount = inputStream.read(buffer)) > 0) {
    out.write(buffer, 0, readCount);
}

out.flush();

最佳答案

看起来读取部分出错了,调用downloadFile(fildId, requestObject)时有没有捕获异常?

我的代码如下所示:

try {

    BoxDefaultRequestObject requestObject = new BoxDefaultRequestObject();

    inputStream = boxClient.getFilesManager().downloadFile(fileId,
            requestObject);

} catch (BoxRestException e) {
    e.printStackTrace();
} catch (BoxServerException e) {
    e.printStackTrace();
} catch (AuthFatalFailureException e) {
    e.printStackTrace();
}

通过这种方式可以检查是否正确生成了InputStream对象。

关于java - 在java中下载box文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24137865/

相关文章:

php - CURL 作为下载管理器,在 PHP 中具有多个连接和进度显示

Android SDK Bundle 下载失败说 "Unknown Network Error"

box-api - 如何自动生成box文件下载网址?

ios - 如何使用 Box V2 iOS SDK 注销用户

java - 如何嵌套 for 循环来打印多维数组?

java - 使用扫描仪分割字符串时出现问题

java - 在groovyConsole中导入Spring框架抛出错误

SQLite 上的 Java JDBC

html - 显示 "Your download will begin in x seconds"有什么好处?

node.js - 使用 Node.js 将文件从字符串上传到 Box API