2014-10-31 4 views
1

Я пытаюсь войти на этот сайт: https://lms.nust.edu.pk/portal/login/index.php Вот мой код:C# Войти на сайт, используя HTTPWebRequest

const string uri = "https://lms.nust.edu.pk/portal/login/index.php"; 
    HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(uri); 
    wr.KeepAlive = true; 
    wr.Method = "POST"; 
    wr.AllowAutoRedirect = false; 
    wr.Proxy = p; 
    wr.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; 
    wr.ContentType = "application/x-www-form-urlencoded"; 
    wr.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36"; 
    string pdata = "username=USERNAME&password=PASSWORD"; 
    byte[] data = UTF8Encoding.UTF8.GetBytes(pdata); 
    wr.ContentLength = data.Length; 
    CookieContainer cookie = new CookieContainer(); 
    wr.CookieContainer = cookie; 
    using (Stream poststream = wr.GetRequestStream()) 
    { 
     poststream.Write(data, 0, data.Length); 
    } 
    HttpWebResponse wp = (HttpWebResponse)wr.GetResponse(); 
    wr.CookieContainer.Add(wp.Cookies); 

Его не проходя мимо страницы входа. Вот что я знаю, что происходит. В wp.Cookies нет файлов cookie. Я отлаживал код, который сказал мне, что даже если у меня указан uri и установил AllowAutoRedirect=false, его не будет в том, что uri и другой url. Я не знаю, почему и как. Может кто-нибудь мне помочь?

+0

Может быть, это поможет http://stackoverflow.com/questions/4158448/c-sharp-webrequest-using-cookies – TGH

ответ

2

Это должно решить вашу проблему, или направить вас в правильном направлении, по крайней мере, вы также можете загрузить Fiddler, чтобы помочь отладить HttpRequests ...

string param = "username=MyUserName&password=123456"; 
string url = "https://lms.nust.edu.pk/portal/login/index.php"; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
request.Method = "POST"; 
request.ContentLength = param.Length; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.CookieContainer = new CookieContainer(); 

using (Stream stream = request.GetRequestStream()) 
{ 
    byte[] paramAsBytes = Encoding.Default.GetBytes(param); 
    stream.Write(paramAsBytes, 0, paramAsBytes.Count()); 
} 

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
{ 
    foreach (var cookie in response.Cookies) 
    { 
     var properties = cookie.GetType() 
           .GetProperties() 
           .Select(p => new 
           { 
            Name = p.Name, 
            Value = p.GetValue(cookie) 
           }); 

     foreach (var property in properties) 
     { 
      Console.WriteLine ("{0}: {1}", property.Name, property.Value); 
     } 
    } 
} 

И ответ я получил ...

Comment: 
CommentUri: 
HttpOnly: False 
Discard: False 
Domain: lms.nust.edu.pk 
Expired: False 
Expires: 01/01/0001 00:00:00 
Name: MoodleSession 
Path:/
Port: 
Secure: False 
TimeStamp: 31/10/2014 00:13:58 
Value: f6ich1aa2udb3o24dtnluomtd3 
Version: 0 

так печенье определенно возвращается, а также ...

Смежные вопросы