Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   C# WebRequest - WebResponse (https://forum.antichat.xyz/showthread.php?t=186488)

WAYS 13.03.2010 17:23

C# WebRequest - WebResponse
 
Всем привет, столкнулся с проблемой чтения ответа после пост запроса.
Проблема в том что я делаю запрос, после чего я должен получить куки #1, потом, оно меня кидает на иную страницу и я получаю куки #2.

Код:

              string uri = "http://site.com/login.php";
              string parameters = "username=" + tb_login.Text + "&password=" + tb_pass.Text;
              WebRequest webRequest = WebRequest.Create(@uri);
              Stream os = null;
              webRequest.Method = "POST";
              webRequest.Timeout = 15000;
              webRequest.ContentType = "application/x-www-form-urlencoded";
              webRequest.Headers.Add("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8");
              webRequest.Headers.Add("Accept-Charset", "iso-8859-1, utf-8, utf-16, *;q=0.1");
              webRequest.Headers.Add("Accept-Encoding", "deflate, gzip, x-gzip, identity, *;q=0");
            byte[] bytes = Encoding.UTF8.GetBytes(parameters);
            try
            {
                webRequest.ContentLength = bytes.Length;
                os = webRequest.GetRequestStream();
                os.Write(bytes, 0, bytes.Length);
            }
            catch
            {
            }
            finally
            {
                if (os != null)
                {
                    os.Close();
                }
            }

WebResponse webResponse = webRequest.GetResponse();
                MessageBox.Show(webResponse.Headers.ToString());
                Меня в момент авторизации перекидывает на другую страницу, и я не получаю заголовки с 1й.

Как получить куки 1?, я в чарлесе их вижу.

Kaimi 13.03.2010 18:38

Мб стоит в начале написать
webRequest.AllowAutoRedirect = false;
и самостоятельно обрабатывать редирект

W!z@rD 13.03.2010 20:13

https://forum.antichat.ru/thread179068.html

WAYS 14.03.2010 02:37

Сделал
Код:

        public string aut()
        {
            var url = "http://site.com/login.php";
            var postData = "username=" + tb_login.Text + "&password=" + tb_pass.Text;
            var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            string Cookies = null;
            httpWebRequest.AllowAutoRedirect = false;
            httpWebRequest.Method = "POST";
            httpWebRequest.ContentType = "application/x-www-form-urlencoded";
            var buffer = Encoding.ASCII.GetBytes(postData);
            httpWebRequest.ContentLength = buffer.Length;
            try
            {
                using (var writer = httpWebRequest.GetRequestStream())
                {
                    writer.Write(buffer, 0, buffer.Length);
                }
                using (var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())
                {
                    Settings1.Default.global_cookie = string.IsNullOrEmpty(httpWebResponse.Headers["Set-Cookie"]) ? "" : httpWebResponse.Headers["Set-Cookie"];
                    Settings1.Default.Save();
                    url = httpWebResponse.Headers.Get("Location") ?? "";
                }
                httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                httpWebRequest.Method = "GET";
                if (!string.IsNullOrEmpty(Cookies))
                {
                    httpWebRequest.Headers.Add(HttpRequestHeader.Cookie, Cookies);
                }
                using (var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())
                {
                    Settings1.Default.cookie = string.IsNullOrEmpty(httpWebResponse.Headers["Set-Cookie"]) ? "" : httpWebResponse.Headers["Set-Cookie"];
                    return httpWebResponse.ResponseUri.ToString();
                }
            }
            catch (Exception er)
            {
                this.Invoke(new UpdateResultCallback(this.UpdateResult), new object[] { er.Message });
                return null;
            }
        }



Время: 17:45