Я пытаюсь загрузить файл, отправленный с моего внутреннего сервера.Метод get хорошо работает на почтальоне, но я не могу заставить его работать из моего внешнего приложения (угловой 5).
Вот мой бэкэнд:
@GET
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("/recupererDocument/{id}")
@ResponseStatus(value = {Response.Status.OK, Response.Status.BAD_REQUEST,
Response.Status.INTERNAL_SERVER_ERROR,})
@ElementClass(request = Long.class, response = Response.class)
public Response recupererDocument(
@NotNull(message = "L'id (identifiant du document) est obligatoire") @PathParam("id") final String id);
public Response recupererDocument(String id) {
File file = null;
final WebTarget target = ...;
Builder builderDoc = target.request(typeMime);
final Response reponseDocument = builderDoc.accept(typeMime).get();
LOGGER.debug(reponseDocument.getStatus());
if (reponseDocument.getStatus() == 200) {
file = reponseDocument.readEntity(new GenericType<File>() {
});
}
reponseDocument.close();
return Response.ok(file, MediaType.APPLICATION_OCTET_STREAM).build();
}
И мой интерфейс:
telechargerPieceJointe(id: string): void {
this.s
.telechargerPieceJointe(id)
.then(pj => {
this.downloadFile(pj);
})
.catch(e => {
if (isDevMode()) {
console.log('Erreur : ' + e);
}
});
}
downloadFile(data: Response) {
const blob = new Blob([data], {type: 'application/octet-stream'});
const url = window.URL.createObjectURL(blob);
window.open(url);
}
telechargerPieceJointe(id: string): Promise<any> {
const url = environment.rest.local.recupererDocument + '/' + id;
const headers = new HttpHeaders({
Accept: 'application/pdf',
responseType: 'blob'
});
return this.httpClient.get(url, {headers}).toPromise();
}
Прямо сейчас в моем интерфейсе при отладке я не вхожу в метод ".then", а в .catch.
У меня следующее сообщение:
Неожиданный% токена в JSON в позиции 0.
Но на вкладке "сеть" в инструментах Chrome Devзапрос хороший (200), и я вижу свой объект в части «ответ». Я не понимаю, почему он не работает: /.
Если кто-то увидит, что я делаю неправильно, это, вероятно, будетспаси мое здравомыслие.