Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Алексей125
0 / 0 / 2
Регистрация: 02.03.2015
Сообщений: 25
#1

Отправка файла на сервер http post запросом - Программирование Android

03.07.2015, 07:09. Просмотров 804. Ответов 1
Метки нет (Все метки)

Здравствуйте. Задача следующая - нужно отправить HTTP POST запрос, содержащий несколько переменных и файл. В сети много информации, но собрать в рабочий код я так и не смог. Люди, посмотрите код пожалуйста... Сижу над проблемой уже 4 день...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
String sendfile (String filename, String filepath) throws IOException {
        String boundary = Long.toHexString(System.currentTimeMillis());
        String charset = "UTF-8";
        URL url = new URL("...");
        File file = new File(filepath);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("POST");
        con.setUseCaches(false);
        con.setDoOutput(true);
        con.setDoInput(true);
        con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
        OutputStream os = con.getOutputStream();
        PrintWriter writer = new PrintWriter(new OutputStreamWriter(os, charset), true);
 
        writer.println("--" + boundary);
        writer.println("Content-Disposition: form-data; name=\"key\"");
        writer.println();
        writer.println(key);
 
        writer.println("--" + boundary);
        writer.println("Content-Disposition: form-data; name=\"client_id\"");
        writer.println();
        writer.println(client_id);
 
        writer.println("--" + boundary);
        writer.println("Content-Disposition: form-data; name=\"direction_id\"");
        writer.println();
        writer.println(direction_id);
 
        writer.println("--" + boundary);
        writer.println("Content-Disposition: form-data; name=\"client_files\"; filename=\"" + filename + "\"");
        writer.println("Content-Type: image/jpg");
        writer.println();
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        for (String line; (line = reader.readLine()) != null; ) writer.println(line);
        writer.println("--" + boundary + "--");
        os.flush();
        os.close();
        BufferedReader in = new BufferedReader(
                new InputStreamReader(
                        con.getInputStream()));
        return in.readLine();
    }
проблема где-то в последнем блоке, т.к. переменные сервер видит, и в ответ шлет, что файл не найден (пробовал закомментировать блок отправки одной переменной - пришла ошибка авторизации).
p.s. Это уже четвертый или пятый (уже не помню) вариант метода... У кого есть опыт подобного кода подскажите пожалуйста...

Добавлено через 1 час 40 минут
p.p.s Должно соответствовать форме:
HTML5
1
2
3
4
5
6
7
8
9
<form action="..." method="post" enctype="multipart/form-data">
            <input type="hidden" name="key" value="a0c8d4a8fa221625512d4a338cb300e8">
            <input type="hidden" name="direction_id" value="19">
            <input type="hidden" name="client_id" value="5">
            
            <input type="file" name="client_files[]">
            <input type="file" name="client_files[]">
            <button class="b-button">Загрузить файл</button>
        </form>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2015, 07:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Отправка файла на сервер http post запросом (Программирование Android):

Отправка файла и данных POST запросом AsyncTask
Доброго, Возникла идея для написания программы которая бы отправляла файл на...

Отправка POST-запроса на сервер
Задача - отправить на сервер запрос (либо параметры для запроса на сервере) и...

Отправка post запросов на сервер
доброго, имеется программа на пк и хочу сделать аналог для андроида, но в...

Отправка данных на сервер методом POST c AsyncTask
Доброго времени суток. Возникла проблема с отправкой данных. Приложение...

Отправка массива данных из Android-приложения на сервер по протоколу HTTP
Пишу приложения которое должно собирать кое какую инфу и отправлять её на...

Необходим пример по retrofit c POST запросом
Здравствуйте, предложите пожалуйста пример по retrofit c POST запросом Только...

1
D7ILeucoH
11 / 10 / 2
Регистрация: 29.02.2016
Сообщений: 300
22.12.2017, 15:09 #2
Хорошо.
writer.println("Content-Disposition: form-data; name="client_files[]"; filename="" + filename + """);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2017, 15:09
Привет! Вот еще темы с решениями:

http Post
Такая проблема. В пост запросе, в хидер добавляю ...

HTTP post android
Просмотрел множество статей об этом, пытался использовать простейший пример...

Android query и HTTP Post
Добрый день. Очень уж понравилась библиотека. Но ни как не получается передать...

Http POST запрос, как правильно написать
Добрый день, мне нужно отправить данные на сервер, посредством http post...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru