私は、RestレスAPIにリクエストするServletを持っています.HttpServletResponseを介してAPIレスポンスのコンテンツを最終的なユーザーに返すようにしたいと考えています。JAX-RS応答をHttpServletResponseに再利用するにはどうすればよいですか?
コンテンツは実際にはStreamingOutputオブジェクトを使用してResponseに挿入する.xlsファイルです。
どうすればいいですか? EDIT
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Client client = ClientBuilder.newClient();
WebTarget target = client.target(url);
Response res = target. request().get();
if (res.getStatus() == 200) {
// how to put res stream into response stream ?
ServletOutputStream stream = response.getOutputStream();
}
client.close();
}
:
私はTedTrippin方法を試してみましたが、見つけるの後
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("bla")
public Response getTopicByName() {
final Workbook wb = new HSSFWorkbook();
StreamingOutput stream = new StreamingOutput() {
@Override
public void write(OutputStream output) throws IOException, WebApplicationException {
wb.write(output);
}
};
responseBuilder = responseBuilder.entity(stream);
responseBuilder = responseBuilder.status(Response.Status.OK);
responseBuilder = responseBuilder.header("Content-Disposition", "attachment; filename=" + device + ".xls");
return responseBuilder.build();
}
サーブレットPOSTメソッド:私は、HttpServletResponseのに
休憩APIメソッドを応答をキャストすることはできませんResponseからInputStreamを回復する方法はうまくいきました。
しかし、私は破損したxlsファイルを取得し続けます。そしてそれはかなり迷惑です。私は、ブラウザから直接要求を行うと、その破損したファイルを取得しません。 どこから来たのか手がかりがありますか?
POSTメソッド:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Client client = ClientBuilder.newClient();
WebTarget target = client.target(url + param + format);
Response res = target.request().get();
if (res.getStatus() == 200) {
response.setHeader("Content-Disposition", "attachment; filename=test.xls");
InputStream in = res.readEntity(InputStream.class);
ServletOutputStream out = response.getOutputStream();
byte[] buffer = new byte[1024];
while (in.read(buffer) >= 0) {
out.write(buffer);
}
out.flush();
}
client.close();
}
ありがとうございました。しかし、今私は別の問題があります:( – Phoste