#angularjs #rest #csv #jax-rs
#angularjs #rest #csv-файл #джакс-рс
Вопрос:
Я боролся с этим весь день и не могу разобраться с проблемой. Я получил веб-сервис JAX-RS, который должен возвращать файл CSV в формате ByteArray клиенту AngularJS: код службы следующий
@POST
@Path("/{id_user}/transactionsCsv")
@Produces({MediaType.APPLICATION_OCTET_STREAM})
@ApiOperation(value = "Transactions de l'utilisateur connecté sous forme CSV",response = byte[].class)
@RolesAllowed(value = SecurityRoles.PORTAIL_ACTIVITE_RUBRIQUE)
public Response getOperationsCsv(@PathParam("id_user") long id_user,
@Context HttpServletRequest request, final TransactionFiltreDTO filtre) throws MalformedURLException {
//CsvContent is a StringBuilder converted to a byte array
byte [] CsvContent = csvExportService.buildCsv();
ResponseBuilder response = Response.ok(new ByteArrayInputStream(CsvContent));
response.header(HttpHeaders.CONTENT_DISPOSITION,
"attachment; filename=" "activite" ".csv")
.header(HttpHeaders.CONTENT_TYPE, "application/csv");
return response.build();
}
И это мой вызов AngularJS :
fetchCsv: function() {
return $http({
url: SERVER_CONTEXT '/rest/utilisateurs/' Session.id '/transactionsCsv',
method: 'POST',
params: {},
headers: {
'Content-type': 'application/csv'
},
responseType: 'arraybuffer',
timeout: '20000'
});
},
Проблема в том, что вызов возвращает: 415 (неподдерживаемый тип носителя)!
Кто-нибудь может сказать мне, не упускаю ли я чего-то в своем коде на стороне сервера или на стороне клиента?
Спасибо 🙂
Комментарии:
1. text/csv — это обычный тип содержимого для csv. Возможно, вы захотите попробовать это
2. Пробовал text / csv, но все равно возвращал ту же ошибку
3.
MediaType.APPLICATION_OCTET_STREAM
также снова предложите другой тип контента. Кроме того, вы используете POST для того, что должно было быть GET. Вы также не отправляете какой-либо текст / csv в своем теле (подразумевая, что вам нужен тип содержимого), но вы запрашиваете его (подразумевая, что вам нужен заголовок Accept). Все это исходит от кого-то, кто никогда не писал java или JAX-RS. Но это куча проблем, которые я вижу на поверхности.4. Я перепробовал все возможные комбинации, но, похоже, ничего не работает:/ Есть еще области, которые я могу исследовать?
5. Трудно сказать, правильно ли вы внесли эти изменения, потому что вопрос здесь все тот же. Я почти уверен, что это связано с вашей неправильной обработкой заголовков content-type / accept.