Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.90/165: Рейтинг темы: голосов - 165, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 02.09.2015
Сообщений: 23

О этот непонятный multipart/form-data

02.09.2015, 23:02. Показов 31627. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не нашел ни одной темы где бы разъяснили как с ним бороться=)
Вот например у меня при загрузке картинки к товару в интернет магазине отправляется такой POST запрос:

[B]Хидеры:

Сам multipart:


И еще запрос идет вот на такой адрес (он меня немного смущает): http://bike18.nethouse.ru/api/... 816360066f <= можно ли вот эту часть "?X-Progress-ID=cd22f6d3d5591d87c88c6b816360066f" убрать при запросе ?

Помогите, пожалуйста, это для меня очень важная часть для дальнейшего развития
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.09.2015, 23:02
Ответы с готовыми решениями:

HttpWebRequest: ПОСТ-запрос, не формируется multipart/form-data
Добрый ... Есть проблема с формировкой запроса в формате multipart/form-data Сервер не может разбить данные на имена и значения ,то...

Загрузка изображения на сервер (multipart/form-data) с помощью GET-запроса
Потребовалось загрузить картинку GET-запросом и залить её в группу вконтакте: public async Task UploadPhoto(Uri photoUri, int albumIndex)...

POST-запрос multipart/form-data - убрать заголовки содержимого Content-Type
Всем доброго времени суток. private async void SubmitForm(Panel form, string name) { using (var client =...

25
0 / 0 / 0
Регистрация: 02.09.2015
Сообщений: 23
06.09.2015, 20:39  [ТС]
Студворк — интернет-сервис помощи студентам
Да да, вот в как раз по этой статье и разобрался, но это естественно не помогло. Мультипарт POST запрос по прежнему возвращает 403, по- любому не правильно я его формирую(
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
06.09.2015, 21:27
Ну тогда вариант только 1, как уже писали выше: ставите сниффер(для такого рода задач Fiddler я использовал) и методично сверяете все, что посылается браузером при нужном действии, с тем, что посылается вами.

Добавлено через 4 минуты
Да, и как у вас, собственно, выглядят сами данные, которые посылаются этим мультипартом, я не вижу.

Добавлено через 4 минуты
C#
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
 public static void POSTsend(string place, string puzzlestring, CookieContainer cont)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://game.dozory.ru/cgi-bin/" + place.ToLower() + ".cgi");
 
            const int diapason = 999999;
            const int diapason2 = 9999999;
            Random rand = new Random();
 
            string boundarynumber = rand.Next(diapason).ToString("D6") + rand.Next(diapason2).ToString("D7");
 
            string boundary = "--Boundary_for_Dozory_" + boundarynumber + ";";
            request.Headers.Add("Cache-Control", "no-cache");
            request.Headers.Add("Pragma", "no-cache");
            request.Method = "POST";
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            request.ContentType = "multipart/form-data; charset=UTF-8; boundary=Boundary_for_Dozory_" + boundarynumber;
            request.KeepAlive = true;
            request.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7,windows-1251,utf-8;q=0.7,*;q=0.7");
            request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            request.Headers.Add("Accept-Language", "ru,en-us;q=0.7,en;q=0.3,ru,en-us;q=0.7,en;q=0.3");
            request.Headers.Add("Keep-Alive", "300");
            request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.7) Gecko/20100625 Firefox/3.6.7";
            request.CookieContainer = cont;
 
 
            byte[] EncodedPostParams = Encoding.GetEncoding(1251).GetBytes(
                boundary + "\r\nContent-Disposition: form-data; name=\"rm\"\r\n\r\nexecuted-puzzle\r\n" +
                boundary + "\r\nContent-Disposition: form-data; name=\"key\"\r\n\r\n" + puzzlestring + "\r\n" +
                boundary + "\r\nContent-Disposition: form-data; name=\"blocks\"\r\n\r\noffice_prof_machine\r\n" +
                boundary + "\r\nContent-Disposition: form-data; name=\"blocks\"\r\n\r\nchat\r\n" +
                boundary + "\r\nContent-Disposition: form-data; name=\"wblocks_params\"\r\n\r\n\r\n" +
                boundary + "\r\nContent-Disposition: form-data; name=\"cwindow\"\r\n\r\noffice\r\n" +
                boundary);
 
            request.ContentLength = EncodedPostParams.Length;
            request.GetRequestStream().Write(EncodedPostParams, 0, EncodedPostParams.Length);
            request.GetRequestStream().Close();
        }
Вот метод из одного моего проектика, посылающий похожий мультипарт. Работает стабильно.
1
0 / 0 / 0
Регистрация: 02.09.2015
Сообщений: 23
07.09.2015, 00:01  [ТС]
Fidler не видет этого POST запроса кстати, его видит только плагин для FireFox
Можно ваш скайп плз, есть пару вопросов, честно сильно мучать не буду
0
49 / 40 / 37
Регистрация: 25.07.2013
Сообщений: 178
07.09.2015, 18:31
Здравствуйте.
Если это вам поможет то вот, метод авторизуется и возвращает страницу с товарами, правда, в ответе куки отсутствуют, которые необходимы для следующего запроса.
C#
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
private static string NetHouseConnect()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://nethouse.ru/signin");
            CookieContainer cc = new CookieContainer();
 
            request.Method = "POST";
            request.KeepAlive = true;
            request.SendChunked = true;
            request.ContentType = "application/x-www-form-urlencoded";
            request.Host = "nethouse.ru";
            request.CookieContainer = new CookieContainer();
            request.Referer = "https://nethouse.ru/signin";
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36";
            
            //var cookie = request.CookieContainer;
 
 
 
            //cc.Add(new Cookie("jv_enter_ts_0fUTSO3i4e", "1441282186339") { Domain = request.Host });
            //cc.Add(new Cookie("jv_visits_count_0fUTSO3i4e", "1") { Domain = request.Host });
            //cc.Add(new Cookie("jv_client_id_0fUTSO3i4e", "32115.dNbLAtLwkvb7jmQNKp9tMD1d1rKCMZpnazSkSXQZT%2Bs") { Domain = request.Host });
            //cc.Add(new Cookie("jv_pages_count_0fUTSO3i4e", "4") { Domain = request.Host });
            //cc.Add(new Cookie("jv_gui_state_0fUTSO3i4e", "WIDGET") { Domain = request.Host });
            //cc.Add(new Cookie("REFERER", "") { Domain = request.Host });
            //cc.Add(new Cookie("PHPSESSID", "14n41onc9d9lt9ue42dmlmrsb6") { Domain = request.Host });
            //cc.Add(new Cookie("_pk_id.1.6c88", "b5ac7b40ec5dd4a4.1441282186.5.1441458570.1441458570.") { Domain = request.Host });
            //cc.Add(new Cookie("_pk_ses.1.6c88", "*") { Domain = request.Host });
            //cc.Add(new Cookie("_ga", "GA1.2.64640660.1441282184") { Domain = request.Host });
            //cc.Add(new Cookie("_ym_visorc_17273296", "w") { Domain = request.Host });
            //cc.Add(new Cookie("_gali", "submit") { Domain = request.Host });
            //cc.Add(new Cookie("id", "597868") { Domain = request.Host });
            //cc.Add(new Cookie("_dc_gtm_UA-27371119-1", "1") { Domain = request.Host });
            //cc.Add(new Cookie("sess_token", "a177c5a0c366ef23b4938e245958cb7b5a5f3d18") { Domain = request.Host });
            //cc.Add(new Cookie("token", "27ed7f51ac80fec2725009ee7ab3cef2dd938ed9") { Domain = request.Host });
 
 
            //request.CookieContainer = cc;
 
            WebHeaderCollection myWebHeaderCollection = request.Headers;
            myWebHeaderCollection.Add("Cache-Control", "max-age=0");
            myWebHeaderCollection.Add("Location", "http://testavtomatizacii.nethouse.ru/");
            myWebHeaderCollection.Add("Content-Encoding", "gzip");
            myWebHeaderCollection.Add("Pragma", "no-cache");
            myWebHeaderCollection.Add("Server", "nginx");
            myWebHeaderCollection.Add("Vary", "Accept-Encoding");
            myWebHeaderCollection.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
            myWebHeaderCollection.Add("Origin", "https://nethouse.ru");
            myWebHeaderCollection.Add("X-Requested-With", "XMLHttpRequest");
            myWebHeaderCollection.Add("Upgrade-Insecure-Requests", "1");
 
 
            byte[] data = Encoding.UTF8.GetBytes("login=testAvtomatizacii&password=qwerty12345&quick_expire=0&submit=%D0%92%D0%BE%D0%B9%D1%82%D0%B8");
            request.ContentLength = data.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(data, 0, data.Length);
            requestStream.Close();
 
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)request.GetResponse();
            Stream responseStream = myHttpWebResponse.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(responseStream, Encoding.UTF8);
            string pageContent = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            responseStream.Close();
            myHttpWebResponse.Close();
            return pageContent;
        }
0
49 / 40 / 37
Регистрация: 25.07.2013
Сообщений: 178
07.09.2015, 18:36
Вот куки, которые должны прийти с ответом:
Миниатюры
О этот непонятный multipart/form-data  
0
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
08.02.2016, 12:59
после первого подключения к сайту или авторизации сохраняете куки:
C#
1
string cookieHeader = response.Headers["Set-cookie"];
Можете остановить, проверить что они приходят.

В следующих запросах добавляете их:
C#
1
request3.Headers.Add("Cookie", cookieHeader);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.02.2016, 12:59

Curl --header 'Content-Type: multipart/form-data' -X POST --form filename=@lib.dll
Здравствуйте коллеги! Хорошего дня! Windows 10 CMD curl --header 'Content-Type: multipart/form-data' -X POST --form...

multipart form data
Если готовая библиотека которая облегчает создание multipart/form data ??

XmlHttpRequest. multipart/form-data
Доброго дня всем. Отправка файла на сервер с помощью XmlHttpRequest вызвала у меня недоумение. По идее, чтобы серверный код мог...

Multipart/form-data vk api
vk api загрузка файлов на сервер (загрузка фото на стену) - ошибка Security Breach2 помогите разобраться... 1.0 запрос...

Проблемы с enctype=multipart/form-data
PHP Version 4.1.2 не передаются глобальные переменные из формы в форму. убераешь enctype=multipart/form-data, передаются. но...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru