У меня есть следующий сценарий:
1) Клиент отправляет HTTP-запрос с включающим объектом на сервер через сокет.
2) Сервер загружает включающий объект в другое место, назовем его Storage.
Мне нужно реализовать только Сервер.
До сих пор я смог реализовать его с использованием Apache HTTP Components библиотека, использующая что-то вроде:
// The request from the client
org.apache.http.HttpRequest request = ...;
// The org.apache.http.entity.InputStreamEntity will
// read bytes from the socket and write to the Storage
HttpEntity entity = new InputStreamEntity(...)
BasicHttpEntityEnclosingRequest requestToStorage = new ......
requestToStorage.setEntity(entity);
CloseableHttpClient httpClient = ...
CloseableHttpResponse response = httpClient.execute(target, requestToStorage );
Пока все хорошо. Проблема в том, что сервер хранения требует аутентификации. Когда Сервер делает первый запрос (через Apache Http Client API), Хранилище отвечает 407 Требуется аутентификация. Apache Http-клиент выполняет первоначальное рукопожатие, затем повторно отправляет запрос , но теперь нет сущности, поскольку она уже была использована для первого запроса.
Одним из решений является кэширование сущность от Клиента, но она может быть очень большой, более 1 ГБ.
Вопрос Есть ли лучшее решение, как предварительная отправка только заголовков запроса?