Отправка файлов с помощью POST с HttpURLConnection

Поскольку разработчики 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.

119
задан Community 23 May 2017 в 12:34
поделиться