Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/39: Рейтинг темы: голосов - 39, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 44
1

(xNet.dll) Ответ POST-запроса (авторизация на одноклассниках)

17.07.2014, 16:56. Показов 7917. Ответов 8
Метки нет (Все метки)

Здравствуйте.
Пытаюсь осуществить авторизацю на odnoklassniki.ru с помощью библиотеки xNet.
Отправляю запрос:
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
68
69
70
71
72
73
74
75
public static string LogIn(string login, string password)
        {
 
            string addres = "";
            string content = "";
 
            
            //Парсим адрес
 
            try
            {
                //Парсим адрес (xNet.Text) с помощью метода Substring 
                using (var request = new HttpRequest())
                {
                    request.UserAgent = HttpHelper.ChromeUserAgent();
 
                    // Отправляем запрос для парсинга адреса
                    HttpResponse response = request.Get("https://odnoklassniki.ru/");
 
                    addres = StringHelper.Substring(response.ToString(), "<form action=\"", "\"");
                    
 
                }
                
            }
            catch (Exception ex) { MessageBox.Show("Error: \n" + ex.Message); }
            // Подготавливаем и отправляем сам запрос
 
            try
            {
                
                using (var request = new HttpRequest())
                {
                    request.UserAgent = HttpHelper.ChromeUserAgent();
 
                    //Заголовки запроса(Headers)
                    request.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
                    request.AddHeader("Referer", "http://odnoklassniki.ru/");
                    request.KeepAlive = true;
 
                   
 
                    //Добавляем сами параметры запроса
 
                    var urlParams = new RequestParams();
 
                    urlParams["st.redirect"] = "";
                    urlParams["st.asr"] = "";
                    urlParams["st.posted"] = "set";
                    urlParams["st.originalaction"] = "http://odnoklassniki.ru/dk?cmd=AnonymLogin&st.cmd=anonymLogin";
                    urlParams["st.fJS"] = "enabled";
                    urlParams["st.st.screenSize"] = "1366 x 768";
                    urlParams["st.st.browserSize"] = "657";
                    urlParams["st.st.flashVer"] = "14.0.0";
                    urlParams["st.email"] = login;
                    urlParams["st.password"] = password;
                    urlParams["st.remember"] = "on";
                    urlParams["st.iscode"] = "false";
 
                   
                    // отправляем сам пост запрос
 
                    HttpResponse response = request.Post(addres, urlParams);
                   
                    
                    content = response.ToString();
 
 
                }
                
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
 
            return content;
        }
В ответ мне дается контент главной страницы, а мне нужен сам ответ:
(Status-Line) HTTP/1.1 302 Moved Temporarily
Server Apache-Coyote/1.1
Location http://odnoklassniki.ru/dk?cmd... VoM_Cgq4F8...
Content-Length 0
Date Thu, 17 Jul 2014 11:39:09 GMT
Сам вопрос: как мне получить ответ POST-запроса(который я могу проанализировать с помощью сниффера), а не контент главной страницы, с помощью xNet?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2014, 16:56
Ответы с готовыми решениями:

(xNet.dll) Ответ POST-запроса
Как получить заголовки? private void Auth(string nick, string login, string pass) { ...

Авторизация на сайте по средствам POST запроса. Как расшифровать gzip ответ?
Всем привет, кто может мне помочь или кто тоже столкнулся с похожей проблемой! Проще говоря решил...

[XNet] Получение POST-запроса через редирект
Делаю на сайт GET запрос и получаю куки. Потом отправляю POST запрос. Все 1 в 1 как с браузера, но...

Ошибка кодировки POST запроса в библиотеке xNet
Добрый день, использую библиотеку xNet (удобна и хорошо документирована). Суть проблемы:...

8
foo();
883 / 585 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
17.07.2014, 19:09 2
Цитата Сообщение от Chucky Посмотреть сообщение
В ответ мне дается контент главной страницы, а мне нужен сам ответ
вообще-то html код и есть ответом на post запрос.
response.Headers - то, что Вам надо, на сколько я понимаю
0
596 / 463 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
17.07.2014, 19:18 3
перейдите гет-ом по ссылке в заголовке location. и почитайте rfc2616.
и не уверен, что вы правильно передаете параметры, хотябы потому что в
Цитата Сообщение от Chucky Посмотреть сообщение
C#
1
urlParams["st.st.screenSize"] = "1366 x 768";
наврядли должны быть пробелы... но я не уверен, вам виднее

Добавлено через 2 минуты
а, кстати,
Цитата Сообщение от Chucky Посмотреть сообщение
ответ POST-запроса
вам же в заголовках явно написали,
Цитата Сообщение от Chucky Посмотреть сообщение
Content-Length: 0
0
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 44
17.07.2014, 20:09  [ТС] 4
Цитата Сообщение от rattrapper Посмотреть сообщение
response.Headers - то, что Вам надо, на сколько я понимаю
или я глупый, или такого свойства/метода нету у объекта response:


Цитата Сообщение от NEbO Посмотреть сообщение
перейдите гет-ом по ссылке в заголовке location. и почитайте rfc2616.
и не уверен, что вы правильно передаете параметры, хотябы потому что в
Сообщение от Chucky
Код C#
1
urlParams["st.st.screenSize"] = "1366 x 768";
наврядли должны быть пробелы... но я не уверен, вам виднее
Добавлено через 2 минуты
а, кстати,
Сообщение от Chucky
ответ POST-запроса
вам же в заголовках явно написали,
Сообщение от Chucky
Content-Length: 0
да, действительно, пробелов быть не должно. исправил.
Да, знаю, мне как раз и нужно перейти GET-ом по заголовку location. Но как мне его получить/обработать? вот этого я не знаю
0
596 / 463 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
17.07.2014, 20:46 5
Лучший ответ Сообщение было отмечено Chucky как решение

Решение

Цитата Сообщение от Chucky Посмотреть сообщение
Но как мне его получить/обработать?
хм. а автодополнятор вот у этого объекта молчит?
Цитата Сообщение от Chucky Посмотреть сообщение
HttpResponse response = request.Post(addres, urlParams);
если да, глянтье в документацию тогда по вашей библиотеке/классу HttpResonse. Вам нужны заголовки ответа

Добавлено через 1 минуту
вот как например, тут: http://msdn.microsoft.com/ru-r... .110).aspx
но я так понимаю, у вас другая длл-ка

Добавлено через 8 минут
а, это библиотека от какого-то чувака с хабра... ну судя по всему, если вам подойдет метод Location.
нашел вот тут: https://github.com/X-rus/xNet/... esponse.cs

Добавлено через 56 секунд

Не по теме:

или не метод? как такие геттеры в сишарпе называются?



Добавлено через 3 минуты
о, кстати, там еще где-то опция есть, AllowAutoRedirect. я так понимаю, она сделает всю черную работу за вас. во, сами взгляните: https://github.com/X-rus/xNet/... t.cs#L2260
1
foo();
883 / 585 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
17.07.2014, 23:17 6
Цитата Сообщение от NEbO Посмотреть сообщение
или не метод? как такие геттеры в сишарпе называются?
NEbO, это называется свойство
1
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 44
17.07.2014, 23:42  [ТС] 7
Цитата Сообщение от NEbO Посмотреть сообщение
а, это библиотека от какого-то чувака с хабра... ну судя по всему, если вам подойдет метод Location.
нашел вот тут: https://github.com/X-rus/xNet/... esponse.cs
Location - свойство, возвращает нулевую строку
Цитата Сообщение от NEbO Посмотреть сообщение
о, кстати, там еще где-то опция есть, AllowAutoRedirect. я так понимаю, она сделает всю черную работу за вас. во, сами взгляните: https://github.com/X-rus/xNet/... t.cs#L2260
никаких изменений :с
0
596 / 463 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
18.07.2014, 00:59 8
попробуйте тогда обратиться к
C#
1
response["Location"]
или посмотрите, как работает метод ToString -- вам его алгоритм скажет больше, чем мне.
но опять же, под моно эта либа не запускается (да и вообще с шарпом связан только реверсом), так что готового решения от меня не ждите. мне очень жаль, что не могу сам проверить свои догадки

Добавлено через 8 минут
о, по второму исходнику, вы обращались к
C#
1
response.RedirectAddress
?
0
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 44
18.07.2014, 13:09  [ТС] 9
Цитата Сообщение от NEbO Посмотреть сообщение
о, кстати, там еще где-то опция есть, AllowAutoRedirect. я так понимаю, она сделает всю черную работу за вас. во, сами взгляните: https://github.com/X-rus/xNet/... t.cs#L2260
Вы были правы!) AllowAutoRedirect помог, вот только я как дурак ставил значение true, а нужно было false.
Т.к. с редиректом, логично, мне давало уже контент ответа от GET-запроса.
Теперь редирект запрещен, и я могу спокойно вытащить необходимые данные. Спасибо большое!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2014, 13:09

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Библиотека xNet.dll отправка простого Get запроса
Приветствую,дорогие форумчане! Собственно вопрос ориентирован на то,что кто-то возможно...

Как получить ответ из POST-запроса?
Как вытащить ответ из POST запроса? Скрин ответа ниже. Нужно вытащить поле Location.

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

Как вернуть ответ после POST-запроса?
Есть на Azure веб приложение, хочу его использовать для работы с VK API, а точнее для доступа к...


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

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

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