Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Алексей125
0 / 0 / 0
Регистрация: 02.03.2015
Сообщений: 17
03.07.2015, 07:09     Отправка файла на сервер http post запросом #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>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2015, 07:09     Отправка файла на сервер http post запросом
Посмотрите здесь:

Android Отправка POST запроса
Отправка POST запроса Android
http Post Android
Android Android query и HTTP Post
Android Отправка данных на сервер методом POST c AsyncTask
Android HTTP post android
Русский Post запрос в базу через http Android
Android Отправка массива данных из андроид приложения на сервер по http
Android Отправка POST
Отправка post запросов на сервер Android
Http POST запрос, как правильно написать Android
Отправка POST запроса Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 22:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru