У меня есть служба java rest, которая должна возвращать PDF.
Это мой код:
@RequestMapping(value = "/pdf", method = RequestMethod.GET)
@Produces("application/pdf")
public javax.ws.rs.core.Response getPdf() throws Exception {
try {
File file = new File("xxx");
FileInputStream fileInputStream = new FileInputStream(file);
javax.ws.rs.core.Response.ResponseBuilder responseBuilder = javax.ws.rs.core.Response.ok((Object) fileInputStream);
responseBuilder.type("application/pdf");
responseBuilder.header("Content-Disposition", "attachment; filename=" + file.getName());
return responseBuilder.build();
} catch(Exception ex) {
return javax.ws.rs.core.Response.serverError().build();
}
}
Когда я тестирую его с помощью POSTMAN, я всегда получаю эту ошибку:
org.springframework.http.converter.HttpMessageNotWritableException: не удалось записать JSON: для класса java .io.FileDescriptor не найден сериализатор и не обнаружены свойства для создания BeanSerializer (чтобы избежать исключения, отключите SerializationFeature.TIL_ON_ ) (через цепочку ссылок: org.glassfi sh .jersey.message.internal.OutboundJaxrsResponse ["context"] -> org.glassfi sh .jersey.message.internal.OutboundMessageContext ["entity"] -> java .io.FileInputStream ["fd"]); вложенное исключение - com.faster xml .jackson.databind.ex c .InvalidDefinitionException: для класса java .io.FileDescriptor не найден сериализатор и не обнаружены свойства для создания BeanSerializer (чтобы избежать исключения, отключите SerializationFeature.FAIL_ON_EMPTY_BEANS) (через цепочку ссылок: org.glassfi sh .jersey.message.internal.OutboundJaxrsResponse ["context"] -> org.glassfi sh .jersey.message.internal.OutboundMessageContext ["entity"] -> java .io.FileInputStream ["fd"])
Я не понимаю, почему говорится о JSON, если я пытаюсь вернуть PDF-файл
Что не так с этим кодом?
Спасибо
ОБНОВЛЕНИЕ: После изменения кода на следующий я не получаю сообщение об ошибке:
File file = orderLabelService.getLabelsSummary(supplierId, date);
return javax.ws.rs.core.Response.ok(file, MediaType.APPLICATION_OCTET_STREAM)
.header("Content-Disposition", "attachment; filename=\"" + file.getName() + "\"" )
.build();
Но результат всегда json:
{
"context": {
"headers": {
"Content-Type": [
{
"type": "application",
"subtype": "octet-stream",
"parameters": {},
"wildcardType": false,
"wildcardSubtype": false
}
],
"Content-Disposition": [
"attachment; filename=\"12-20200313.pdf\""
]
},
"configuration": null,
"entity": "e:\\content\\12-20200313.pdf",
"entityType": "java.io.File",
"entityAnnotations": [],
"entityStream": {
"closed": false,
"committed": false
},
"length": -1,
"location": null,
"language": null,
"lastModified": null,
"date": null,
"acceptableMediaTypes": [
{
"type": "*",
"subtype": "*",
"parameters": {},
"quality": 1000,
"wildcardType": true,
"wildcardSubtype": true
}
],
"acceptableLanguages": [
"*"
],
"committed": false,
"lengthLong": -1,
"mediaType": {
"type": "application",
"subtype": "octet-stream",
"parameters": {},
"wildcardType": false,
"wildcardSubtype": false
},
"allowedMethods": [],
"requestCookies": {},
"entityClass": "java.io.File",
"responseCookies": {},
"entityTag": null,
"links": [],
"stringHeaders": {
"Content-Type": [
"application/octet-stream"
],
"Content-Disposition": [
"attachment; filename=\"12-20200313.pdf\""
]
}
},
"status": 200,
"length": -1,
"location": null,
"language": null,
"lastModified": null,
"date": null,
"entity": "e:\\content\\12-20200313.pdf",
"cookies": {},
"mediaType": {
"type": "application",
"subtype": "octet-stream",
"parameters": {},
"wildcardType": false,
"wildcardSubtype": false
},
"allowedMethods": [],
"metadata": {
"Content-Type": [
{
"type": "application",
"subtype": "octet-stream",
"parameters": {},
"wildcardType": false,
"wildcardSubtype": false
}
],
"Content-Disposition": [
"attachment; filename=\"12-20200313.pdf\""
]
},
"entityTag": null,
"links": [],
"stringHeaders": {
"Content-Type": [
"application/octet-stream"
],
"Content-Disposition": [
"attachment; filename=\"12-20200313.pdf\""
]
},
"statusInfo": "OK",
"headers": {
"Content-Type": [
{
"type": "application",
"subtype": "octet-stream",
"parameters": {},
"wildcardType": false,
"wildcardSubtype": false
}
],
"Content-Disposition": [
"attachment; filename=\"12-20200313.pdf\""
]
}
}
Мне нужно сохранить или открыть PDF-файл на клиенте
Спасибо