Post запрос: лайк вконтакте
Не получается реализовать 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();
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" программно отправляемые данные имеют неверные знаки препинания ( т.е. одни заменены на другие, если точнее, то все разделители заменены на % ), менял кодировку -- не помогло ( сейчас стоит стандартная кодировка полученная при помощи снифера ).
Проблема: Ответ с сервера не приходит, действие не выполняется.
:facepalm: сам не знаешь что у тебя в коде творится : |
Или я не прав? Поясни в чём ошибка. + запросы на другие .php выполняются корректно.
Код:
act%3Da_do_like%26al%3D1%26from%3Dwall_page%26hash%3D6830d6f4239807fabf%26object%3Dwall62982491_1251%26wall%3D
P.S.
Я C# учу по самоучителям, и в статье про Post запросы я нашёл именно такую конструкцию. Я думал, что обрабатываться должен именно такой запрос. =)