Mam aplikację kliencką Java do komputerów desktop, która ładuje pliki do usługi REST.Pasek postępu ładowania pliku przy użyciu opcji RestTemplate.postForLocation
Wszystkie połączenia z usługą REST są obsługiwane za pomocą klasy Spring RestTemplate.
Czekam na zaimplementowanie paska postępu i anulowanie funkcjonalności, ponieważ przesyłane pliki mogą być dość duże.
Szukałem sposobu na wdrożenie tego w Internecie, ale nie miałem szczęścia.
Próbowałem implementacji mojego ResourceHttpMessageConverter i podstawiania metody writeInternal(), ale ta metoda wydaje się być wywoływana podczas jakiejś buforowanej operacji przed faktycznym wysłaniem żądania (więc strumień jest czytany za jednym razem przed wysłaniem).
Próbowałem nawet przesłonić metodę CommonsClientHttpRequestFactory.createRequest() i implementować własną klasę RequestEntity za pomocą specjalnej metody writeRequest(), ale pojawia się ten sam problem (cały strumień jest czytany przed faktycznym wysłaniem wiadomości).
Czy szukam w niewłaściwym miejscu? Czy ktoś zrobił coś podobnego.
Wiele rzeczy, które czytałem w Internecie na temat wdrażania pasków postępu, mówi o tym, jak załadować przesyłkę, a następnie za pomocą oddzielnych żądań AJAX, aby odpytać serwer sieciowy o postęp, co wydaje się dziwnym sposobem na obejście tego problemu.
Każda pomoc lub wskazówki są mile widziane.
to może mieć co szukasz http://stackoverflow.com/questions/5294532/httpclient-upload-big-file-and-show-sent-bytes-number – ams
Dzięki za link. Niestety podany przykład wykorzystuje biblioteki apache o niskim poziomie, więc nie jestem pewien, jaka odpowiednia klasa FileBody znajdowałaby się w bibliotekach Spring Rest, ani jak mógłbym wprowadzić własną implementację do ich wykorzystania. – glidester