【发布时间】:2013-02-22 17:08:58
【问题描述】:
我正在为我们的主应用程序编写一个自定义代理作为 Web 服务客户端,该应用程序使用 REST Web 服务。出于安全原因,我尝试使用客户端的 servlet 作为代理从服务器端检索 PDF,然后通过客户端应用程序在应用程序 Web 浏览器中显示它。
作为这个的核心,我有这段代码:
protected void copy(HttpResponse fromResponse, HttpServletResponse toResponse)
throws IOException{
HttpEntity entity = fromResponse.getEntity();
for(Header header:fromResponse.getAllHeaders()){
toResponse.setHeader(header.getName(), header.getValue());
}
BufferedInputStream inputStream = new BufferedInputStream(entity.getContent());
BufferedOutputStream outputStream = new BufferedOutputStream(toResponse.getOutputStream());
int oneByte;
int byteCount = 0;
while((oneByte = inputStream.read()) >= 0){
outputStream.write(oneByte);
++byteCount;
}
log.debug("Bytes copied:" + byteCount);
它应该将返回的输出流中的 PDF 复制到当前的输出流中,然后返回它。
但是,当我运行它时,我从 Adobe Reader 收到一条错误消息,指出文件已损坏且无法修复。当我直接运行 URL 时,文件很好,所以它必须是交接中的东西。 byteCount 等于 PDF 文件大小。
有人知道问题出在哪里吗?
【问题讨论】:
标签: java jakarta-ee pdf servlets