2011-02-07 82 views
1

我是相对新的Java开发.. 我想创建一个Web服务(jax-ws)/ Web应用程序,它将接收一些输入并生成pdf,然后打开pdf在浏览器中。我设法创建pdf(使用itext)并使用servlet(使用FileInputStream等)在大型文件中打开它。 但是我不知道,如何从web服务中返回servlet。 我应该怎么做,所以当我通过servlet调用Web服务来接收pdf时?从Web服务返回一个pdf在浏览器

回答

1

如果您已经从servlet返回PDF,这意味着您的servlet发送PDF流作为输出,并可能将内容类型设置为“application/pdf”。这在浏览器中正常工作,这是正确的方法。

但是,您无法从浏览器轻松地调用Web服务(无论是JAX-WS还是任何其他堆栈)。 Web服务调用需要POST和严格定义的SOAP内容。但是,您可以使用AJAX调用Web服务,但这是一个不同的故事(请参阅REST)。

如果要从Web服务返回二进制数据(请记住Web服务是针对机器的,而不是针对使用Web浏览器的人),您有两种选择:使用base64序列化二进制数据或使用multipart HTTP响应(MTOM标准,参见例如:http://www.mkyong.com/webservices/jax-ws/jax-ws-attachment-with-mtom)。

+0

非常感谢您的回答。因此,为了将PDF传递给客户端并使用Web服务,我必须使用流/字节arrray通过Web服务的方法“上传”生成的PDF。然后将此字节数组转换为一个编码为base64(?)的字符串,并返回字符串作为Web方法的返回类型? 之后,Web服务客户端(如servlet)将使用与第一次上传PDF相同的逻辑来检索数据? – Manos 2011-02-09 14:49:22