Получение кода ошибки 415 при нажатии rest api (post) для csv экспорта данных solr со страницы html. От почтальона ответ приходит в формате CSV - PullRequest
0 голосов
/ 09 октября 2019

У меня есть служба (post method-rest api), которая запрашивает данные из solr, где данные принимаются как строковое значение csv. Я пытаюсь записать данные String в CSV-файл. При вызове API со страницы HTML я получаю код ошибки 415

Я пробовал все типы MIME (например, text / csv, application / json, application / octate-stream)

Если я получаю тот же сервис от почтальона, я получаю код состояния 200 (успех), и тело ответа приходит в виде csv (через запятую), тот же текст, который я хочу загрузить со страницы html, в виде файла .csv.

@RequestMapping(value = "/csv/{pathVar1}", method = RequestMethod.POST)
  public void getRecordsAsCsv(@RequestBody(required = false) QueryStateModel queryString,
      @PathVariable("pathVar1") String pathVar1,
      @MatrixVariable(value = "intVal1", defaultValue = "0") final int intVal1,
      @MatrixVariable(value = "IntVal2", defaultValue = "10") final int intVal2,
      @MatrixVariable(value = "sort", required = false) final String sSort,
      @MatrixVariable(value = "testVal1", required = false) final String testVal1,
      @MatrixVariable(value = "testVal", required = false) final String testVal,
      @MatrixVariable(value = "fileName") final String fileName,
      @RequestParam(value = "xy", defaultValue = Constants.AND_KEY) final String xy,
      @RequestParam(value = "wt", defaultValue = "csv") final String wt,
      HttpServletRequest request, HttpServletResponse response)
      throws Exception {

    final String[] query = request.getParameterValues("q");

    String csvResponse = cacheManager.getRecords(queryString, pathVar1, intVal1, IntVal2, sSort, testVal, query,
          recordIdentifier, xy, wt);

    String date = LocalDate.now().toString();
    String qualifiedName;
    qualifiedName = fileName+ date + CSV_FILE_EXTENSION;
    exportToCsvfile(csvResponse, response, qualifiedName);    
  }

public static void exportToCsvfile(String value, HttpServletResponse response, String fileName) throws IOException {
     response.setHeader("Content-Disposition", "attachment; file=" + fileName);
     response.setContentType("text/csv");

     try(OutputStream writer = response.getOutputStream()){
     writer.write(value.getBytes());
     }
  }

<html><head>
    <title>ExportAsCSV</title>
  </head>
  <body>
    <h3>Download CSV Customers File</h3>
      <form action="http://localhost:8081/test/csv/pathVariable" method="POST" target="_self">
        <input type="submit" value="ExportCsv">
     </form>
  </body>
</html>
...