REST响应文件到String

时间:2016-07-26 21:26:39

标签: java jaxb jersey jax-rs

URL url = new URL(binpath);
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
String mt = connection.getContentType();
ResponseBuilder response = Response.ok((Object) is, mt);
response.header("Content-Disposition","attachment; filename=" + binpath.substring(binpath.lastIndexOf('/') + 1, binpath.length()));
return response.build();

我有一个带有上述代码(Response)的REST服务。调用时保存文件值为“file1 addsagfdfgfd”

的文件

当我从另一个类调用此函数并使用Response获取如下内容时,它不会向我提供响应的内容。它返回

com.sun.jersey.core.spi.factory.ResponseImpl@66e5a761
String rp = file1Response.toEntity().toString(); 

如何从其余的Response(这是一个文件)中获取字符串值,或者如何更改代码以返回字符串?

1 个答案:

答案 0 :(得分:0)

我会将文件解析为String或创建一个包含有关该文件及其内容的所有信息的类。您可能对MessageBodyWriter存在问题。

如果将文件转换为String,则可以轻松将其放入响应主体中。同样适用于自编类。您可以通过注释您不希望与@XmlTransient一起发送的字段来控制将与正文一起发送的字段。

我猜MessageBodyWriter无法处理InputStream。你有没有检查过HTTP状态代码?它可能是500 Internal Server Error,在您的日志中,您应该会看到类似于"类型为InputStream"的MessageBodyWriter。

此外,您应该在问题中编写整个方法代码,提供您在该方法中使用的所有变量。