gpt4 book ai didi

java - Jersey 异步下载 zip 文件

转载 作者:行者123 更新时间:2023-12-01 12:20:03 24 4
gpt4 key购买 nike

我目前使用的是 Jersey 2.13。我希望客户端从服务器下载一个zip文件,并且我希望服务器在下载完成后删除该文件。因此,我尝试了 AsyncResponse,这样我就可以注册一个 CompletionCallback 以便知道下载已完成。对于我当前的代码,客户端得到:“失败:HTTP 错误代码:415”。

服务器代码是:

@GET
@Path("/{id}")
@Produces({"application/zip"})
public void getResourceTree(@Suspended final AsyncResponse asyncResponse, @PathParam("id") String id) throws IOException{
asyncResponse.register(new CompletionCallback() {
@Override
public void onComplete(Throwable throwable) {

if (throwable == null) {
// no throwable - the processing ended successfully
// (response already written to the client)
// Delete temporary zip file...
} else {
throw new UnexpectedException("The user did not receive the zip file in path:"+ getResourceTreeZipName(id) +" successfully");
}
}
});

new Thread(new Runnable() {
@Override
public void run() {
File file = createZipFile(id);
asyncResponse.resume(Response.ok((Object) file).build());
}
}).start();
}

客户端代码是:

private File downloadZipFile(String resourceId){
Client client = Client.create();
WebResource serverWebResource = client.resource(serverURI+"/"+resourceId);
ClientResponse response = serverWebResource.accept("application/zip").get(ClientResponse.class);
InputStream in = response.getEntityInputStream();
//Create and return the zip file from the input stream...
}

我做错了什么?

最佳答案

您是否尝试过使用其他 REST 工具(例如 Postman),并检查服务器在通过带有接受 header 的 GET 调用时是否返回正确的对象?我要做的第二件事是调试客户端并检查对象创建后是否设置了 header 接受。

关于java - Jersey 异步下载 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26732194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com