Поскольку разработчики Android рекомендуют использоватьHttpURLConnection
класс, мне было интересно, может ли кто-нибудь предоставить мне хороший пример того, как отправить «файл» растрового изображения (фактически поток в памяти) через POST на HTTP-сервер Apache. Меня не интересуют файлы cookie, аутентификация или что-то сложное, но я просто хочу иметь надежную и логичную реализацию. Все примеры, которые я видел здесь, больше похожи на «давайте попробуем это, и, возможно, это сработает».
Прямо сейчас у меня есть этот код:
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL("http://example.com/server.cgi");
urlConnection = (HttpURLConnection) url.openConnection();
} catch (Exception e) {
this.showDialog(getApplicationContext(), e.getMessage());
}
finally {
if (urlConnection != null)
{
urlConnection.disconnect();
}
}
где showDialog должен просто отображать AlertDialog
(в случае недопустимого URL?).
Теперь предположим, что я генерирую растровое изображение следующим образом: Bitmap image = this.getBitmap()
внутри элемента управления, производного от, View
и я хочу отправить его через POST. Какой была бы правильная процедура для достижения такого результата? Какие классы мне нужно использовать? Могу ли я использовать HttpPost
подобное в этом примере ? Если да, то как мне создать изображение InputStreamEntity
для моего растрового изображения? Мне было бы противно потребовать сначала сохранить растровое изображение в файле на устройстве.
Я также должен упомянуть, что мне действительно нужно отправлять на сервер каждый неизмененный пиксель исходного растрового изображения, поэтому я не могу преобразовать его в JPEG.