Возвращает ли http-клиент поток в качестве ответа или читает байты из потока и возвращает нам ответ?
Если он возвращает поток, пользователю нужно будет читать из этого потока, чтобы получить ответ?
Например. Мы используем ApacheAsyncHttpClient для получения больших двоичных объектов из службы хранилища Azure. Ответ REST должен содержать только поток, откуда следует читать большой двоичный объект, верно? Но я заметил, что клиент сам читает все байты из потока перед тем, как вызвать наш завершенный обратный вызов.
И если данные из потока не читаются, HTTP-соединение остается открытым?
Изменить - мы не можем использовать SDK по причинам, выходящим за рамки этого вопроса. Мой вопрос специально для ApacheAsyncHttpClient.
Он читает весь поток перед вызовом завершенного обратного вызова. В идеале я бы хотел, чтобы он возвращал мне поток, и мое приложение читало из этого потока. Есть способ сделать это ? И все ли http-клиенты ведут себя одинаково?
Как сказал @Kayaman, вы пробовали использовать SDK по умолчанию ?? github.com/Azure/azure-storage-java
@kayaman - Отредактировал вопрос
Вы читали документацию и говорилось ли что-нибудь о получении результата потока? Не все HTTP-клиенты ведут себя одинаково. Вы можете написать свой собственный и заставить его делать разные безумные вещи. Но в целом они работают примерно одинаково. В конце концов, все они выполняют HTTP-запросы, и это устанавливает некоторые границы.
Я попытался реализовать собственный Consumer для потоковой передачи тела ответа, но не смог. Я хочу вернуть своему клиенту CompletetableFuture объекта ответа. Затем он начнет читать из потока в объекте ответа. Для справки -> stackoverflow.com/questions/50294297/…




Это полностью зависит от клиента. Сервер вернет поток байтов по TCP / IP. Тот, кто обрабатывает возвращенный поток, может решить, что с ним делать. Так что, наверное, вам нужно читать по-другому. Я уверен, что в документации есть ответы на все вопросы.