在单个调用中使用Java发送不同类型的对象

时间:2017-10-04 12:27:47

标签: java

首先,我不确定这是否可能。我正在将数据字节作为PDF刷新到浏览器。现在要求是,我想生成pdf并且还发送一个额外的对象来发送。有可能吗?

我写过类似的东西,但结果对象没有得到回应。

YBUtil.GeneratePdf(response,documentBytes, "Bureau"); 
result.setStatus("SUCCESS");
return result; --> I want to pass this object as well

GeneratePdf方法

    public static void GeneratePdf(HttpServletResponse response, byte[] documentBytes, String fileName){

    response.setHeader("Content-Disposition", "inline;filename="+fileName+".pdf");
    response.setContentType("application/pdf");
    response.setHeader("Expires", "0");
    response.setHeader("Cache-Control", "must-revalidate, postcheck=0, pre-check=0");
    response.setHeader("Pragma", "public");
    response.setContentLength(documentBytes.length); 
    ServletOutputStream out = null;
    try {
        out = response.getOutputStream();
        out.write(documentBytes);
        out.flush();
        out.close();
    } catch (IOException e) {
        e.printStackTrace();
    }       
}

2 个答案:

答案 0 :(得分:0)

原则上,这更多是关于HTTP协议而不是关于Java。

HTTP旨在发送请求,发送一个可选的请求主体,并在响应中接收响应,并发送一个可选的响应主体。一。不多于此。

在处理典型的文本内容时,您可以发送/响应类似文本的格式,例如XML,JSON或Web表单,其中包含您希望它包含的所有内容。但是当你想要接收/发送一个文件时,它是二进制文件,它必须按原样发送,同时还有告诉文件类型和名称的元数据。

现在,当你想发送/接收更多而不仅仅是一个文件时,看起来你已经被卡住了。好吧不。查找multipart / form-data并意识到您可以使用类似的HTTP响应。就像电子邮件一样。

Java可以编程为以多部分响应进行响应。然而,编程需要做一些工作,而且我还没有真正找到一个有效的库来帮助我做到这一点。

答案 1 :(得分:0)

我通过发送一个包含字节的DTO对象(对于pdf,这种pdf的解析在客户端完成)以及添加到DTO中的必要值来完成此操作。