PDA

Просмотр полной версии : C# WebRequest - WebResponse


WAYS
13.03.2010, 17:23
Всем привет, столкнулся с проблемой чтения ответа после пост запроса.
Проблема в том что я делаю запрос, после чего я должен получить куки #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.Cooki e, 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;
}
}