Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Post запрос: лайк вконтакте

83K
07 июля 2012 года
mr. TrueMan
3 / / 07.07.2012
Здраствуйте.
Не получается реализовать post-запрос на лайк вконтакте. Вот исходный код.
Код:
wr = (HttpWebRequest)WebRequest.Create("http://vk.com/like.php");
            wr.CookieContainer = new CookieContainer();
            wr.CookieContainer.SetCookies(wr.RequestUri, this.wHeaders); //this.wHeaders это переменная с заголовками полученными при регистрации.
            wr.Method = "POST";
            wr.Host = "vk.com";
            wr.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0";
            wr.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            wr.Timeout = 12000;
            wr.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
            byte[] sentData = Encoding.UTF8.GetBytes(System.Web.HttpUtility.UrlEncode("act=a_do_like&al=1&from=wall_page&hash=6830d6f4239807fabf&object=wall62982491_1251&wall=1", Encoding.UTF8));
            wr.ContentLength = sentData.Length;
            Stream str = wr.GetRequestStream();
            str.Write(sentData, 0, sentData.Length);
            HttpWebResponse WR = (HttpWebResponse)wr.GetResponse();
            Stream str2 = WR.GetResponseStream();
            string text = new StreamReader(str2).ReadToEnd();
            Console.WriteLine(text);
            Console.WriteLine(WR.ResponseUri);
            str2.Close();
            str.Close();
Думаю в коде всё понятно.
Параметры HttpWebRequest'а копипастом получены с аналогичного запроса ( только руками ) при помощи снифера "Charles" + интересно что в снифере "WireShark" программно отправляемые данные имеют неверные знаки препинания ( т.е. одни заменены на другие, если точнее, то все разделители заменены на % ), менял кодировку -- не помогло ( сейчас стоит стандартная кодировка полученная при помощи снифера ).
Проблема: Ответ с сервера не приходит, действие не выполняется.
277
07 июля 2012 года
arrjj
1.7K / / 26.01.2011
UrlEncode
:facepalm: сам не знаешь что у тебя в коде творится : |
83K
07 июля 2012 года
mr. TrueMan
3 / / 07.07.2012
А в чём проблема? Перед записью данных в поток нужно их закодировать, потом перевести в байты и после записывать.
Или я не прав? Поясни в чём ошибка. + запросы на другие .php выполняются корректно.
277
07 июля 2012 года
arrjj
1.7K / / 26.01.2011
urlencode превращает твой запрос в такую ересь:
 
Код:
act%3Da_do_like%26al%3D1%26from%3Dwall_page%26hash%3D6830d6f4239807fabf%26object%3Dwall62982491_1251%26wall%3D
83K
07 июля 2012 года
mr. TrueMan
3 / / 07.07.2012
arrjj, большое спасибо. Без URLEncode всё отлично работает.
P.S.
Я C# учу по самоучителям, и в статье про Post запросы я нашёл именно такую конструкцию. Я думал, что обрабатываться должен именно такой запрос. =)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог