Добрый день!
Задача: Сделать POST на сайт rutracker.org(залогиниться) =)
Вот что получилось
var uid = "***";
var pass = "***";
var loginUrl = "http://login.rutracker.org/forum/login.php";
var homeUrl = "http://rutracker.org/forum/index.php";
var contentPath = Environment.CurrentDirectory + "\\postResponse.xml";
var msg = new StringBuilder(String.Empty);
var reqString = String.Format(@"login_username={0}&login_password={1}&login=%C2%F5%EE%E4", uid, pass);
var requestData = win1251.GetBytes(reqString);
var cc = new CookieContainer();
var request = (HttpWebRequest)WebRequest.Create(loginUrl);
request.AllowAutoRedirect = true;
request.CookieContainer = cc;
request.AllowWriteStreamBuffering = true;
request.Method = "POST";
request.UserAgent = @"Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6";
request.Accept = @"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Headers.Add(@"Accept-Language: ru,en-us;q=0.7,en;q=0.3");
request.Headers.Add(@"Accept-Encoding: gzip,deflate");
request.Headers.Add(@"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7");
request.Headers.Add(@"Keep-Alive: 115");
request.Referer = homeUrl;
request.ContentType = @"application/x-www-form-urlencoded";
request.ContentLength = requestData.Length;
request.KeepAlive = true;
using (var requestStream = request.GetRequestStream())
requestStream.Write(requestData, 0, requestData.Length);
POST отправляется, но в контенте пустота!
т.е. этот код не отрабатывается:
using (var requestStream = request.GetRequestStream())
requestStream.Write(requestData, 0, requestData.Length);
уверен на 100%!
Заголовки смотрел через прогу HTTPDebuggerPro.
помогите разобраться! мб какой-то баг?
VS2010 Ultimate v 10.0.30319.1 RTMRel
Здравствуйте, uranpro, Вы писали:
U>Добрый день!
U>Задача: Сделать POST на сайт rutracker.org(залогиниться) =)
U>Вот что получилось
U>POST отправляется, но в контенте пустота!
U>т.е. этот код не отрабатывается:
U>U> using (var requestStream = request.GetRequestStream())
U> requestStream.Write(requestData, 0, requestData.Length);
U>
U>помогите разобраться! мб какой-то баг?
А где здесь request.GetResponse()?
U>VS2010 Ultimate v 10.0.30319.1 RTMRel
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, uranpro, Вы писали:
U>>Добрый день!
U>>Задача: Сделать POST на сайт rutracker.org(залогиниться) =)
U>>Вот что получилось
U>>POST отправляется, но в контенте пустота!
U>>т.е. этот код не отрабатывается:
U>>U>> using (var requestStream = request.GetRequestStream())
U>> requestStream.Write(requestData, 0, requestData.Length);
U>>
U>>помогите разобраться! мб какой-то баг?
S>А где здесь request.GetResponse()?
U>>VS2010 Ultimate v 10.0.30319.1 RTMRel
var webResponse = request.GetResponse();
using (var responseStream = new StreamReader(webResponse.GetResponseStream(), win1251))
{
var content = responseStream.ReadToEnd();
if (!string.IsNullOrEmpty(content))
{
try
{
var doc = HtmlToXml(content);
doc.Save(contentPath);
xmlGridView1.DataFilePath = contentPath;
}
catch { }
return;
}
}
что-то непонятное творится, поставил вместо HttpDebuggerPro Fiddler, в Fiddler`e все нормально.
получается, что меня сайт не хочет пускать... сейчас разберусь.
Проблем много.
У меня не получалось залогиниться на сайт через POST.
я узнавал это из ответа сервера, он был читабельный раньше!
скачал прогу HttpDebuggerPro, по логам увидел, что в requestStream не пишется инфа.
Долго мучился, лазил по форумам и т.д. Пока не нашел прогу Fiddler2 и установил ее)
Она показала, что запись в поток все таки происходит. Но теперь ответ от сервера приходит в какой-то другой кодировке(после установки проги)
!
я и не знаю как мне быть теперь. пойду напьюсь сегодня
и еще, после POST в ответе есть Cookie, которые у меня хранятся в cc(CookieContainer).
далее редирект, в GET куки куда-то пропадают.