Поскольку разработчики Android рекомендуют использовать класс HttpURLConnection
, мне было интересно, может ли кто-нибудь предоставить мне хороший пример того, как отправить растровый «файл» (на самом деле в -память поток )через POST на HTTP-сервер Apache. Меня не интересуют куки, аутентификация или что-то сложное, я просто хочу иметь надежную и логичную реализацию. Все примеры, которые я видел здесь, больше похожи на «давайте попробуем это, и, возможно, это сработает».
Прямо сейчас у меня есть этот код:
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.