私は、RESTWebサービスを使用するメインアプリケーションのWebサービスクライアントとしてカスタムプロキシを作成しています。セキュリティ上の理由から、クライアント側のサーブレットをプロキシとして使用して、サーバー側から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ファイルのサイズと同じです。
誰かが問題が何であるかについての考えを持っていますか?