Мне нужно вызвать удаленный обработчик интерфейса REST и отправить его в тело запроса. Обратите внимание: Я не управляю сервером. Я не могу изменить запрос на мультипликацию, клиент должен работать в соответствии с внешней спецификацией.Загрузка файла через Jaxax REST Клиентский интерфейс с сторонним сервером
До сих пор мне удалось заставить его работать, как это (исключая заголовки и т.д., для краткости):
byte[] data = readFileCompletely();
client.target (url).request().post (Entity.entity (data, "file/mimetype"));
Это работает, но не в состоянии с большими файлами, которые не помещаются в память. И поскольку у меня нет ограничений на размер файла, это вызывает беспокойство.
Вопрос: Возможно ли использовать потоки или что-то подобное, чтобы избежать чтения всего файла в память?
Если возможно, я предпочел бы избежать расширения, специфичного для реализации. Если нет, то решение, которое работает с RESTEasy (на Wildfly), также приемлемо.
Каков фактический тип носителя? 'application/octet-stream' имеет запись, которая может обрабатывать' InputStream'. Или я думаю, что ['StreamingOutput'] (http://stackoverflow.com/a/12012867/2587435) даже работает на стороне клиента для всех типов носителей, хотя я его не пробовал, но я полагаю, что это _should_ work –
It полностью зависит от содержимого файла, но обычно это будет «application/pdf». – doublep
Я бы попробовал 'StreamingOutput'. Я думаю, что использовал его раньше на стороне клиента. Я не помню. –