Я пытаюсь отправить pdf через POST на конечную точку REST через feign, которую я ранее получил как MultipartFile
из моего собственного весеннего REST API, но мой клиент Feign всегда терпит неудачу с сообщением:
Тело запроса должно содержать либо сам файл pdf (application / pdf), либо путь к файлу (application / json с ключом 'path')
Моя конечная точка REST:
@Autowired
PDFConverterService pdfConverterService;
public void importResource(MultipartFile resource) throws IOException {
String contentType = resource.getContentType();
if (contentType.equals("application/pdf")) {
File tmp = File.createTempFile("tmp","pdf");
resource.transferTo(tmp);
pdfConverterService.process(tmp);
tmp.delete();
}
}
Мой симулированный клиент:
@FeignClient(name = "PDFConverterService", url = "http://foo/bar/api")
@Service
public interface PDFConverterService {
@RequestMapping(method = RequestMethod.POST, value = "/process")
@Headers({"Accept: application/json", "Content-Type: application/pdf"})
String process(@RequestBody File file);
}
Я также пытался использовать process(@Param("file") File file)
, что также не удалось с той же ошибкой. Мне еще предстоит найти какую-либо полезную документацию для симулированного POST-запроса с телом pdf-запроса.
Соответствующий curl, который работает, будет выглядеть примерно так:
curl -X POST -H "Accept: application/json" -H "Content-Type: application/pdf" -i http://foo/bar/api/process --data-binary "@\path\to\some\pdf"