JAX-RS POST не может вернуть пустой xlsx как mime-тип

#java #excel #post #jax-rs #mime-types

#java #excel #Публикация #jax-rs #mime-типы

Вопрос:

Вот код для моей службы получения JAX-RS

 @GET
@Produces("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
@Path("/xlsReport")
public Response viewXlsReport(@QueryParam("paymentIds")String paymentIds) throws IOException
{
 List spaymentIds = Arrays.asList(paymentIds.split(","));
 XSSFWorkbook wb = new XSSFWorkbook();
 XSSFSheet s1 = wb.createSheet("Some Details");
 File f = new File("Some Details.xslx");
 FileOutputStream fos = new FileOutStream(f);
 wb.write(fos);
 fos.close();
 return Response.ok((Object)file).build();
}
  

И почтовая служба похожа

 @POST
@Produces("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
@Path("/exportReport")
@Consumes(MediaType.APPLICATION_JSON)
public Response viewXlsReport(String ids) throws IOException
{
 List<string> sIds = new ArrayList<String>();
 StringTokenizer tokens = new StringTokenizer(ids,"amp;");
 // populate sIds , not used in both GET amp; POST Version

 XSSFWorkbook wb = new XSSFWorkbook();
 XSSFSheet s1 = wb.createSheet("Some Details");
 File f = new File("Some Details.xslx");
 FileOutputStream fos = new FileOutStream(f);
 wb.write(fos);
 fos.close();
 return Response.ok((Object)file).build();
}
  

Проблема

  • xlsx, созданный из GET, открывается нормально ,
  • но сообщение из POST выдает ошибку формат или расширение файла недопустимы

Указывает на примечание

  1. Оба кода одинаковы для создания пустого файла xslx
  2. Попытался сгенерировать пустой файл xlsx из java main, тот же код, работает нормально
  3. Я также проверил временные файлы на tomcat, они подходят как для GET, так и для POST, но когда я загружаю их из браузера IE, я получаю сообщение об ошибке открытия файла POST

Единственное отличие заключается в том, что @GET amp; @POST и идентификаторы способа оплаты анализируются, но они не используются, поскольку мы генерируем пустые файлы (на данный момент, будем использовать позже, чтобы попасть в DB и получить некоторые подробности)

На самом деле не уверен, что не так в коде.

Ответ №1:

проблема была на стороне клиента в запросе GET, отправляющем правильный заголовок responseType: ‘arraybuffer’, в POST я не отправлял этот заголовок, отсюда и проблема