Нужно программно (Visual Studio - C#) пройти авторизацию на сайте www.odnoklassniki.ru. Юзаю Http Analyzer. Составил GET запрос: Code: private void button4_Click(object sender, EventArgs e) { HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://www.odnoklassniki.ru"); myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.37 Safari/530.5"; myHttpWebRequest.Accept = "application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; myHttpWebRequest.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"); HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream()); MessageBox.Show(myStreamReader.ReadToEnd()); string sCookies = ""; if (!String.IsNullOrEmpty(myHttpWebResponse.Headers["Set-Cookie"])) { sCookies = myHttpWebResponse.Headers["Set-Cookie"]; } } Это вроде верно, в MessageBox получается начальная страничка. Нашел кое-какую информацию, но не могу разобраться. Запутался с составлением POST запроса, нужно отправить на сайт лог и пасс, подскажите как? или на наглядном примере объясните) либо приму ссылочки с полезной инфой.
Писал для себя на VB.NET на VS2008TS, думаю не составит труда перевести на C# Code: Public Function Request(Dim Login as String, Dim Pass as String, ByVal URL as String, Dim RegEx_Parse as String, Dim RegEx_Denial as String) Dim StreamReader As StreamReader = Nothing Dim StreamWriter As StreamWriter = Nothing Dim RegEx As New System.Text.RegularExpressions.Regex("") Dim Match As System.Text.RegularExpressions.Match Dim Req As HttpWebRequest = Nothing Dim Resp As HttpWebResponse = Nothing Dim Send As String = "login=" & Login & "&pass=" & Pass Dim Content As String = Nothing Dim Cookie As New CookieCollection Cookie.Add(New Cookie("name", "value", "path", "domain")) 'Если нужно используем кукисы + атачим их Dim Result As String = Nothing Try Req = WebRequest.Create(Site.URL) Req.Method = WebRequestMethods.Http.Post Req.ContentLength = Send.Length Req.ContentType = "application/x-www-form-urlencoded" Req.CookieContainer = New CookieContainer 'Создаём контейнер для кукисов Req.CookieContainer.Add(Cookie) 'Атачим кукисы StreamWriter = New StreamWriter(Req.GetRequestStream, System.Text.Encoding.Default) StreamWriter.Write(Send) StreamWriter.Close() Resp = Req.GetResponse Cookie = Resp.Cookies 'Получаем Кукисы StreamReader = New System.IO.StreamReader(Resp.GetResponseStream, System.Text.Encoding.Default) Content = StreamReader.ReadToEnd Match = RegEx.Match(Content, Site.RegEx_Denial, RegexOptions.Singleline Or RegexOptions.IgnoreCase) If Match.Success = False Then Match = RegEx.Match(Content, Site.RegEx_Parse, RegexOptions.Singleline Or RegexOptions.IgnoreCase) If Match.Success = True Then Result = Match.Groups(1).Value End If End If Resp.Close() StreamReader.Close() Catch ex As Exception MsgBox("Ошибка " & ex.Message) End Try Return Result End Function Отправка данных + парсинг ответа регексами
Регуля́рные выраже́ния (англ. regular expressions, сокр. RegExp, RegEx, жарг. регэ́кспы или ре́гексы) — система синтаксического разбора текстовых фрагментов по формализованному шаблону, основанная на системе записи образцов для поиска. (с) wiki
Вот написал вроде POST запрос: Code: public void post_request(string Login,string Pass) { HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://wg53.odnoklassniki.ru/cdk/st.cmd/login/tkn/718"); myHttpWebRequest.Method = "POST"; myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.37 Safari/530.5"; myHttpWebRequest.Accept = "application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; myHttpWebRequest.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"); String Send = "st.posted=set&st.email="+Login+"&st.password="+Pass+"+&button_go=%D0%92%D0%BE%D0%B9%D1%82%D0%B8"; byte[] ByteArr = System.Text.Encoding.Default.GetBytes(Send); myHttpWebRequest.ContentLength = ByteArr.Length; myHttpWebRequest.GetRequestStream().Write(ByteArr, 0, ByteArr.Length); HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream()); MessageBox.Show(myStreamReader.ReadToEnd()); } на выходе как я понимаю получаю все время "неверный логин или пароль" . проблема в кодировке? или код кривой?)