Web Services 如何从MediaType.APPLICATION_OCTET_STREAM响应实体中读取byte []响应?

frebpwbc  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(148)

我有两个Rest Webservice应用程序,其中WS1调用WS2以获取byte[]编码格式的PDF文件,如下所示。WS1应用程序需要从WS2的响应中获取实际解码的byte[]。有人能帮我获取所需的byte[]吗?

Web服务2中的方法2以编码字节格式返回pdf:

byte [] byteArr = // PDF file converted to byte Array

return Response.ok(byteArray, MediaType.APPLICATION_OCTET_STREAM)
          .header("Content-Disposition", "attachment; filename=\"" + file.getName() + "\"" ) //optional
          .build();

Web服务1中的方法1调用WS2中的方法2并继续,然后将字节数组[PDF]上载到服务器

ResponseEntity<String> response = //Rest call to method 2 in WS app 2
byte[] pdfByte = ??

//Code to process Byte Array
vpfxa7rd

vpfxa7rd1#

这段代码将把响应实体放到一个字节数组中,这是不是最有效的就是另一个问题了。

import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput;
import java.io.ByteArrayOutputStream;

Response resp = <call to WS2>
StreamingOutput stream = (StreamingOutput) response.getEntity();

ByteArrayOutputStream output = new ByteArrayOutputStream();
stream.write(output);
byte[] out = output.toByteArray();

相关问题