Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2017, 15:52   #1
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию HttpWebRequest и HttpWebResponse отладить запрос

Здравствуйте. Сижу на бирже фл.ру и временами делаю несложные заказы, когда студенты активизируются к сессии. Дак вот, попался один, на GET и POST запросы. Ну я почитал это дело, сделал. Решил закрепить. Решил протестировать прям на этой бирже просто загрузку картинки для работы. И тут возникла проблема, которую не могу пока решить. Может кто натолкнет на нужную мысль. Теперь к делу.

Логика следующая. Чтобы загрузить работу, нужно пройти авторизацию. Чтобы пройти авторизацию, нужно до нее выдернуть значение одно значение с исходного кода страницы GET запросом

Код:
https://www.fl.ru/
, который вернет 200 ответ. Так называемый

Код:
u_token_key
Проблем не возникло, параметр беру. Еще нужно выдернуть две куки, которые возвращает ответ, это

Код:
PHPSESSID 
pda
Тоже проблем не возникло. Теперь могу перейти к авторизации. Шлю POST запрос

Код:
https://www.fl.ru/login/
с необходимыми параметрами для авторизации, это

Код:
Логин в открытом виде
Пароль в открытом виде
u_token_key
+куки в заголовке запроса PHPSESSID и pda
Все норм. Приходит ответ 302, но это норм. Этот ответ дает нам еще 4 нужных куки

Код:
ue_sso_token
id
name
pwd
Ну ниче страшного, добавляем их к ранее найденым кукам. Все компоненты в сборе. Для теста посмотрю страницу с настройками, который неавторизованному пользователю закрыт. Выполняю GET запрос

Код:
https://www.fl.ru/users/ТУТ_ЛОГИН/setup/main/
, все норм, данные в ответе идут верные.

Далее делаю POST запрос

Код:
https://www.fl.ru/xajax/commune.server.php
на открытие формы "Добавить работу" с параметрами

Код:
xjxr это время UTC с 1970 года количество секунд
xjxargs это запись "<xjxobj><e><k>id</k><v>N0</v></e><e><k>prof_id</k><v>N27</v></e></xjxobj>" в экранированном виде
xjxargs  еще раз со звездочкой
u_token_key
xjxfun это значит константа
Все хорошо, приходит ответ 200. Ну по присылаемому в ответе исходному коду страницы могу убедиться что она действительно открылась.

А далее не могу понять сути. Судя по HTTP Analyzer запрос на добавление картинки идет сюда
Код:
https://www.fl.ru/uploader.php
Но у меня на этом месте софт зависает, далее пишет что время ожидания истекло, при этом вообще запрос не отправляется.
Заголовки старался взять из снефера. Вот пример загрузки из снифера

Код:
POST /uploader.php HTTP/1.1
Host: www.fl.ru
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0
Accept: */*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
X-Requested-With: XMLHttpRequest
Cache-Control: no-cache
Referer: https://www.fl.ru/users/ТУТ_ЛОГИН/
Content-Type: multipart/form-data; boundary=---------------------------183511188914743
Cookie: pda=0; _ga=GA1.2.746312634.1496481799; _ym_uid=1496481799723411287; _gid=GA1.2.1437771583.1505460645; new_pf0=1; new_pf10=1; hidetopprjlenta=0; cover_preview_close=1; _ym_isad=2; PHPSESSID=nl6028oone1nb8httmip43sgn7; _ga_cid=746312634.1496481799; _ym_visorc_6051055=w; ue_sso_token=DdrQKpqV5NmZjfJF0l%252FzNgSBIOWn8s3BB5cWDcFBbeUrtMVxVhPTpf4b3OZ%252FHqYH7QmfhX7CaOAftx2lc5bL8SsT4pik0e3uNQzIfsT7NbwuctN8ymabQutAaSPB40DPQAVLFmevw71NeXhe4EMu6l99QX2MiPWALdLZXzU8LMwCd%252FdO9gvMF9V58od7BUaqaKqaXViuoXOugsfBPO2TsA%253D%253D; id=1754693; name=ТУТ_ЛОГИН; pwd=d2228771848f8aa04da9ad6eab27a73b; _gat=1
Connection: keep-alive
Accept-Encoding: gzip, deflate
Content-Length: 17728

-----------------------------183511188914743
Content-Disposition: form-data; name="resource"

fe409-7d610-826bf1b-pf_preview
-----------------------------183511188914743
Content-Disposition: form-data; name="action"

create
-----------------------------183511188914743
Content-Disposition: form-data; name="u_token_key"

cc5036402aa6ecd10aa088fee43b6035
-----------------------------183511188914743
Content-Disposition: form-data; name="qquuid"

84b-a049
-----------------------------183511188914743
Content-Disposition: form-data; name="qqtotalfilesize"

16941
-----------------------------183511188914743
Content-Disposition: form-data; name="qqfile"; filename="f_08258fdfe4806b4e.png"
Content-Type: image/png

‰PNG

   
IHDR   И   И   *X®ћ   	pHYs  Д  Д•+    IDATxњнЅypЧ}пын™ћ}ЯЂ™Б`Я Ip)QEQ»DYЉ_[ЧЋ|ЅД±Јз©*‰^Х}©[·nЩI]ї8П%З±ќЕk”X»dнЕ}'‚Ш—іпыLПњчGП4+АЂ`ЄPдфtџ>УЭЯ>їЯ9зч;!<«Пoы†МЃdЄ@   3 # mбO	@
....................тут много буковок....................
ЅўЗjRќЇ2©6х8ЕZГdЌшп?эШ*@
  @™hў*  ( ЕA™< *R  ‰ю| \ њ ¦ ШЊюПoЯГa
шя:N? aњ>/    IEND®B`‚
-----------------------------183511188914743--


Собственно, как мне отправить правильно запрос на загрузку картинки???? Вот как это стоит у меня сейчас
Код:
            //-----------------------------------POST----------------------------------------------------------------------//
            request = (HttpWebRequest)HttpWebRequest.Create("https://www.fl.ru/uploader.php");// POST на загрузку файла превью
            request.Method = "POST";
            request.Host = "www.fl.ru";
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0";
            request.Accept = "*/*";
            request.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
            request.Headers.Add("X-Requested-With", "XMLHttpRequest");
            request.Headers.Add("Cache-Control", "no-cache");
            request.Referer = "https://www.fl.ru/users/" + login + "/";
            string boundary = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).Ticks.ToString();
            //request.ContentType = "multipart/form-data; boundary=---------------------------" + boundary;
            request.ContentType = "multipart/form-data; boundary=---------------------------179001590319553";
            request.Headers.Add(HttpRequestHeader.Cookie, sCookies);    //куки+
            request.Headers.Add("Accept-Encoding", "gzip, deflate");

            buffer = Encoding.Default.GetBytes("-----------------------------179001590319553\nContent-Disposition: form-data; name=\"resource\"\n\n434af-e3642-97f9c0b-pf_preview\n-----------------------------179001590319553\nContent-Disposition: form-data; name=\"action\"\n\ncreate\n-----------------------------179001590319553\nContent-Disposition: form-data; name=\"u_token_key\"\n\nac8d30bafed1df543bf49b2971edfed1\n-----------------------------179001590319553\nContent-Disposition: form-data; name=\"qquuid\"\n\nbd4-ae4b\n-----------------------------179001590319553\nContent-Disposition: form-data; name=\"qqtotalfilesize\"\n\n17531\n-----------------------------179001590319553\nContent-Disposition: form-data; name=\"qqfile\"; filename=\"f_01658fdfa4d05dd4.png\"\nContent-Type: image/png\n\n" + file_string + "\n-----------------------------179001590319553\n");

            request.ContentLength = buffer.Length;
            request.GetRequestStream().Write(buffer, 0, buffer.Length); // НА ЭТОМ МЕСТЕ ЗАВИСАЕТ!!!
            response = (HttpWebResponse)request.GetResponse();                     // POST на загрузку файла превью
            //---------------------------------------------------------------------------------------------------------//

Как мне правильно сформировать запрос?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 22.09.2017, 10:58   #2
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Форум умер?
a.n.o.n.i.m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод POST (HttpWebRequest и HttpWebResponse) Fordros Microsoft Office Excel 2 27.08.2013 12:20
httpwebrequest httpwebresponse C# qwq C# (си шарп) 35 26.12.2012 15:01
C# созранить изображение из потока (HttpWebRequest HttpWebResponse) qwq C# (си шарп) 4 09.12.2012 19:17
Проблема с HttpWebRequest и HttpWebResponse 3dgraph Общие вопросы .NET 2 15.07.2009 11:20
HttpWebRequest и HttpWebResponse Bbo Общие вопросы .NET 1 14.05.2009 15:51