Это не Spring-приложение, поэтому я не могу использовать ResponseEntity для отправки ответа в виде byte[].
Я пытаюсь отправить ответ как входной поток, но это дает мне следующую ошибку.
ExceptionEnti E com.ibm.commerce.foundation.rest.providers.ExceptionEntityProvider toResponse поток закрыт java. io.IOException: поток закрыт
Я проверил, используется ли поток дважды, а это нет. Код, который я использую, приведен ниже.
Код: Выделить всё
@javax.ws.rs.GET
@javax.ws.rs.Path(value="downloadPdf")
public javax.ws.rs.core.Response downloadPdf(
@javax.ws.rs.PathParam(value="storeId") java.lang.String storeId,
@javax.ws.rs.QueryParam(value="objetId") java.lang.String objetId) {
final String METHODNAME = "downloadPdf";
try {
ContextService contextService = ContextServiceFactory.getContextService();
CommandContext commandContext = ContextHelper.createCommandContext(((com.ibm.commerce.component.contextserviceimpl.BusinessContextInternalService)contextService).getActivityToken());
TypedProperty paramInvMap = new TypedProperty();
paramInvMap.put("objectId", objetId);
InvoiceDownloadCmd downloadInvoicesCmd = (InvoiceDownloadCmd) CommandFactory.createCommand(InvoiceDownloadCmd.NAME, commandContext.getStoreId());
downloadInvoicesCmd.setCommandContext(commandContext);
downloadInvoicesCmd.setRequestProperties(paramInvMap);
downloadInvoicesCmd.execute();
return Response
.ok(downloadECMInvoicesCmd.pdfStream(), MediaType.APPLICATION_OCTET_STREAM)
.header("content-disposition","attachment; filename = myfile.pdf")
.build();
} catch (ECException e) {
e.printStackTrace();
}
return null;
};
Подробнее здесь: https://stackoverflow.com/questions/790 ... a-java-api