如何用基于wink的restful服务传输文件流。

IluckySi 发布于 2014/06/09 22:44
阅读 1K+
收藏 0

Linux基金会免费官方培训及考试申请即将截止,戳这里申请!>>>

@肖国颖 你好,想跟你请教个问题:


我最近在项目中用到了apache wink,在使用过程中遇到了一点问题,希望您有时间帮助解答一下,谢谢!

我用wink 创建了一个服务,用来返回了一个压缩文件流,同时创建了一个客户端,用来请求,

首先我在服务端设置断点,客户端请求确实可以拦截到,问题是: 服务器响应客户端后,我并不能从response中

获取这个文件流?

等待中。。。。。。


加载中
0
IluckySi
IluckySi

ok! 经过我不懈的努力,已经基本解决!代码如下:

服务器端程序:

@POST
@Path("/getZip")
@Produces("application/zip")  
public Response getZip(String message) throws FileNotFoundException { 
FileInputStream fis = new FileInputStream(new File("E:/src/1.zip"));
Response.ResponseBuilder responseBuilder = null;
        Response response = null;
        responseBuilder = Response.ok(fis, MediaType.APPLICATION_OCTET_STREAM_TYPE);
        responseBuilder.type(MediaType.APPLICATION_OCTET_STREAM_TYPE);
        response = responseBuilder.header("content-disposition", "inline;filename= file.zip").build();
        return response;
}
客户端程序:

RestClient restClient = new RestClient();
Resource resource = restClient.resource("your url");
final ClientResponse response = resource.post(message);
System.out.println("服务器返回状态: " + response.getStatusCode());
InputStream is = response.getEntity(new EntityType<InputStream>(){}); 
System.out.println("服务器返回文件大小: " + is.available());
如果有什么好的解决方法,欢迎回帖!

返回顶部
顶部