Jako część mojej aplikacji na Androida chciałbym przesłać mapy bitowe do zdalnego zapisania. Mam prostą komunikację HTTP GET i POST działającą doskonale, ale dokumentacja jak wykonać wieloczęściowy test POST wydaje się być tak rzadka jak jednorożce.Przesyłanie z wieloma Androidami
Co więcej, chciałbym przesłać obraz bezpośrednio z pamięci, zamiast pracować z plikiem. W przykładowym kodzie poniżej otrzymuję tablicę bajtów z pliku, który będzie później używany z HttpClient i MultipartEntity.
File input = new File("climb.jpg");
byte[] data = new byte[(int)input.length()];
FileInputStream fis = new FileInputStream(input);
fis.read(data);
ByteArrayPartSource baps = new ByteArrayPartSource(input.getName(), data);
To wszystko wydaje się dość oczywiste dla mnie, poza tym, że nie mogę dla życia mnie dowiedzieć się, skąd wziąć tę ByteArrayPartSource. Łączę się z plikami JAR httpclient i httpmime, ale nie ma kości. Słyszałem, że struktura pakietu zmieniła się drastycznie między HttpClient 3.x a 4.x.
Czy ktoś używa tego ByteArrayPartSource w systemie Android i jak je zaimportował?
Po kopaniu dokumentacji i przeszukiwaniu Internetu wymyśliłem coś, co pasuje do moich potrzeb. Aby dokonać wieloczęściowy żądanie takie jak formularze POST poniższy kod wystarczyły dla mnie:
File input = new File("climb.jpg");
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://localhost:3000/routes");
MultipartEntity multi = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
String line;
multi.addPart("name", new StringBody("test"));
multi.addPart("grade", new StringBody("test"));
multi.addPart("quality", new StringBody("test"));
multi.addPart("latitude", new StringBody("40.74"));
multi.addPart("longitude", new StringBody("40.74"));
multi.addPart("photo", new FileBody(input));
post.setEntity(multi);
HttpResponse resp = client.execute(post);
Bit HTTPMultipartMode.BROWSER_COMPATIBLE jest bardzo ważne. Dzięki temu Radomir's blog.
Jeśli ktoś stara się rozwiązać import MultipartEntity. Zobacz ten wpis na blogu z linkami do http: //blog.tacticalnuclearstrike słoika.com/2010/01/using-multipartentity-in-android-applications/ – Blundell
Dzięki za to. Miałem ten sam problem. Z wyjątkiem tego, co mnie martwi, to to, że rozmiar pliku mojej aplikacji jest 3 lub 4 razy większy. Zastanawiam się, czy może istnieć sposób na proste dodanie obsługi wieloczęściowej zamiast ładowania 4 słoików. –