W czasach wersji 3.x Apache Commons HttpClient możliwe było wysyłanie żądania POST typu multipart / form-data ( przykład z 2004 roku ). Niestety nie jest to już możliwe w wersji 4.0 HttpClient .
W przypadku naszej podstawowej działalności „HTTP” tryb wieloczęściowy jest nieco poza zakresem. Chcielibyśmy użyć kodu wieloczęściowego obsługiwanego przez inny projekt, dla którego jest on objęty zakresem, ale nie znam żadnego. Kilka lat temu próbowaliśmy przenieść kod wieloczęściowy do wspólnego kodera-dekodera, ale tego nie zrobiłem. Oleg niedawno wspomniał o innym projekcie, który ma wieloczęściowy kod parsujący i może być zainteresowany naszym kodem wieloczęściowym. Nie znam aktualnego stanu tego. ( http://www.nabble.com/multipart-form-data-in-4.0-td14224819.html )
Czy ktoś zna bibliotekę Java, która pozwala mi napisać klienta HTTP, który może wysyłać żądania POST typu multipart / form-data?
Kontekst: Chcę używać zdalnego interfejsu API Zoho Writer .
Odpowiedzi:
Używamy HttpClient 4.x do tworzenia wieloczęściowych postów w plikach.
AKTUALIZACJA : Począwszy od HttpClient 4.3 , niektóre klasy zostały wycofane. Oto kod z nowym API:
Poniżej znajduje się oryginalny fragment kodu z wycofanym interfejsem HttpClient 4.0 API :
źródło
Oto zależności Mavena, które mam.
Kod Java:
Zależności Mavena w pom.xml:
źródło
HttpEntity
zajęciaJeśli rozmiar plików JAR ma znaczenie (np. W przypadku apletu), można również bezpośrednio użyć httpmime z java.net.HttpURLConnection zamiast HttpClient.
Kod:
Zależność w pom.xml:
źródło
Użyj tego kodu, aby przesłać obrazy lub inne pliki na serwer za pomocą postu w wielu częściach.
wymaga przesłania poniższych plików.
biblioteki są
httpclient-4.1.2.jar,
httpcore-4.1.2.jar,
httpmime-4.1.2.jar,
httpclient-cache-4.1.2.jar,
commons-codec.jar
icommons-logging-1.1.1.jar
mają być w ścieżce klas.źródło
Możesz także użyć REST Assured, który jest oparty na kliencie HTTP. To jest bardzo proste:
źródło
multiPart("controlName", new File("/somedir/file.bin"))
zobacz github.com/rest-assured/rest-assured/wiki/ ...Oto rozwiązanie, które nie wymaga żadnych bibliotek.
Ta procedura przesyła każdy plik w katalogu
d:/data/mpf10
dourlToConnect
źródło
httpcomponents-client-4.0.1
pracował dla mnie. Jednak musiałem dodać zewnętrzny jarapache-mime4j-0.6.jar
( org.apache.james.mime4j ), w przeciwnymreqEntity.addPart("bin", bin);
razie nie mógłbym się skompilować. Teraz działa jak urok.źródło
Znalazłem ten przykład w przewodniku szybkiego startu Apache . Dotyczy wersji 4.5:
źródło
Mamy czystą implementację w Javie przesyłania wieloczęściowego formularza bez użycia jakichkolwiek zewnętrznych zależności lub bibliotek poza jdk. Skorzystaj z https://github.com/atulsm/https-multipart-purejava/blob/master/src/main/java/com/atul/MultipartPure.java
źródło
Mój kod wysyła plik multipartFile do serwera.
źródło