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

Отправка файла на сервер http post запросом

03.07.2015, 07:09. Просмотров 962. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

1
D7ILeucoH
11 / 10 / 2
Регистрация: 29.02.2016
Сообщений: 303
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

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

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

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


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

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

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