2017-05-24 12 views
-1

Tout fonctionne correctement, mais nous cliquons sur le bouton submitData() je vais me montrer la page de connexion au lieu de myhomepage,code fonctionne très bien mais je ne suis toujours pas capable de se connecter en IRCTC Site

donc premier naviguer page de connexion, il établira le cookie, puis cookie stocké dans le code de conteneur cookie est

CookieContainer cookieJar = new CookieContainer(); 
public Form1() 
{ 
    String captcha; 
    InitializeComponent(); 
} 

private void BUTTON_LOGIN_Click(object sender, EventArgs e) 
{ 
    //Get captcha   
    var request = (HttpWebRequest)HttpWebRequest.Create("https://www.irctc.co.in/eticketing/loginHome.jsf"); 
    request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; 
    request.KeepAlive = true; 
    request.CookieContainer = cookieJar; 
    request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"; 

    var response = request.GetResponse(); 
    using (var stream = response.GetResponseStream()) 
    { 

    } 

    // need array, different storage for every cookies 
    // 
    foreach (Cookie c in cookieJar.GetCookies(response.ResponseUri)) 
    { 
     request.CookieContainer.Add(c); 
     MessageBox.Show("Cookie['" + c.Name + "']: " + c.Value); 
    } 
} 

Je demande de l'aide captcha cookies

private void pictureBox1_Click(object sender, EventArgs e) // This Event Refresh thr captcha 
{ 
    //Get captch  

    var request =(HttpWebRequest)HttpWebRequest.Create("https://www.irctc.co.in/eticketing/captchaImage"); 
    request.Accept = "image/webp,image/*,*/*;q=0.8"; 
    WebHeaderCollection myWebHeaderCollection = request.Headers; 
    myWebHeaderCollection.Add("Accept-Language", "en-US;q=0.8"); 
    myWebHeaderCollection.Add("Upgrade-Insecure-Requests", "1"); 
    request.KeepAlive = true; 

    Uri target = new Uri("https://www.irctc.co.in"); 
    cookieJar.Add(new Cookie("language", "en_IN") { Domain = target.Host }); 

    request.CookieContainer = cookieJar; 

    request.Referer = "https://www.irctc.co.in/eticketing/loginHome.jsf"; 
    request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"; 


    var response = request.GetResponse(); 
    using (var stream = response.GetResponseStream()) 
    { 

     pictureBox1.Image = Bitmap.FromStream(stream); 
    } 

    // need array, different storage for every cookies 
    // 
    foreach (Cookie c in cookieJar.GetCookies(response.ResponseUri)) 
    { 
     request.CookieContainer.Add(c); 
     MessageBox.Show("Cookie['" + c.Name + "']: " + c.Value); 
    } 
} 


private void button1_Click(object sender, EventArgs e) 
{ 
    submitData(); 
} 

private void displayHtml(String html) 
{ 
    webBrowser1.Navigate("about:blank"); 
    while (webBrowser1.Document == null || webBrowser1.Document.Body == null) 
     Application.DoEvents(); 
    webBrowser1.Document.OpenNew(true).Write(html); 
} 

Et enfin, je soumets des données après avoir rempli captcha à la zone de texte et voici erreur cela me redirige page de connexion à nouveau, donc ce qui ne va pas.

private void submitData() 
{ 
    try 
    { 
     String user = "myusername"; 
     String pass = "mypassword"; 
     String submit = "Submit"; 
     String captcha=richTextBox1.Text.ToString() ; 

     ASCIIEncoding encoding = new ASCIIEncoding(); 
     // MessageBox.Show(captcha); 
     string postData = "j_username=" + user + "&j_password=" + pass + "&j_captcha=" + captcha + "&submit=" + submit + "&tneg=" ; 
     byte[] data = Encoding.UTF8.GetBytes(postData); 

     Uri target = new Uri("https://www.irctc.co.in"); 



     cookieJar.Add(new Cookie("language", "en_IN"){ Domain = target.Host }); 
     HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://www.irctc.co.in/eticketing/home"); 
     request.CookieContainer = cookieJar; 

     WebHeaderCollection myWebHeaderCollection = request.Headers; 
     myWebHeaderCollection.Add("Accept-Language", "en-US;q=0.8"); 
     myWebHeaderCollection.Add("Upgrade-Insecure-Requests", "1"); 

     request.Method = "POST"; 
     request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"; 
     request.ContentType = "application/x-www-form-urlencode"; 
     request.Referer = "https://www.irctc.co.in/eticketing/loginHome.jsf"; 
     request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; 
     request.ServicePoint.Expect100Continue = false; 

    //  var bytes = Encoding.UTF8.GetBytes("action=login&from=http%3A%2F%2Fwww.dofus.com%2Ffr&login=user123&password=password1232F&remember=1"); 
    // request.ContentLength = bytes.Length; 

     request.ContentLength = data.Length; 
     request.KeepAlive = true; 
//  request.AutomaticDecompression = DecompressionMethods.GZip; 
    // request.AutomaticDecompression = DecompressionMethods.Deflate; 

//  request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br"); 
     // request.SendChunked = true; 
    // request.TransferEncoding = "gzip, deflate, br"; 
     request.Host = "www.irctc.co.in"; 

     //request.Headers.Add 
     Stream stream = request.GetRequestStream(); 
     stream.Write(data, 0, data.Length); 
     stream.Close(); 

     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     stream = response.GetResponseStream(); 

     foreach (Cookie c in cookieJar.GetCookies(request.RequestUri)) 
     { 

      MessageBox.Show("Cookie['" + c.Name + "']: " + c.Value); 
     } 
     StreamReader sr = new StreamReader(stream); 
     //richTextBox1.Text = sr.ReadToEnd(); 
     String myhtml = sr.ReadToEnd().ToString(); 

     displayHtml(myhtml); 

     sr.Close(); 
     stream.Close(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Error : " + ex.Message); 
    } 
} 
+0

Quelle est la question? Quelle est l'erreur? Quelle est l'aide dont vous avez besoin? Simplement poster votre code ici ne fera rien. Essayez et expliquez ce que vous essayez de faire et quel est le problème auquel vous êtes confrontés en le faisant. Aidez-nous pour que nous puissions vous aider. – Hexxx

Répondre

0

Dans la méthode submitData()

request.ContentType = "application/x-www-form-urlencode" 

est une faute de frappe ici, vous avez manqué un 'd'

devrait ressembler à ceci: -

request.ContentType = "application/x-www-form-urlencoded" 

ContentType est "application/x-www-form-urlencode d".

Si le serveur ne peut pas comprendre le type de données de formulaire (dans ce cas, "application/x-www-form-urlencode" est inconnu du serveur), il rejette la demande et redirige l'utilisateur vers la page de connexion comme vous l'avez mentionné. Vous pouvez également consulter le Form ContentType in HTML Forms(w3.org) pour plus d'informations.

Espérons que cela aide :)

+0

Je vous remercie beaucoup saurabh..LOUVREZ GENIUS Cela fonctionne vraiment pour moi. –