2017-05-24 8 views
-1

すべての作業にログインすることはできないのですが、我々はsubmitData()ボタンをクリックしてくださいクッキーをセットし、その後、クッキーコンテナコードに格納されたクッキーはコードワークスファインは、しかし、私はまだ適切IRCTCのウェブサイト

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); 
    } 
} 

それからクッキー

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); 
} 
を使用してキャプチャするための要求であります

最後に、キャプチャをテキストボックスに入力した後にデータを提出します。エラーこれは私のログインページを再度リダイレクトするので、間違っています。方法submitData(で

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

どうしますか?エラーとは何ですか?必要なヘルプは何ですか?ここにコードを投稿するだけでいいことはありません。何をしようとしているのか、またその中で直面している問題は何かを説明してください。私たちがあなたを助けるために私たちを助けてください。 – Hexxx

答えて

0

)ここ

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

はタイプミスで、あなたはそれがこのようにする必要があり1 'D'

を見逃している: -

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

ContentTypeは「application/x-www-form-urlencode d」です。

サーバがフォームデータタイプ(この場合、 "application/x-www-form-urlencode"はサーバには不明)を理解できない場合、リクエストを拒否し、ユーザをログインページにリダイレクトしますあなたが言ったように。

詳細については、Form ContentType in HTML Forms(w3.org)をチェックすることもできます。

希望するもの:

+0

本当にありがとうsaurabh..LOOK LIKE GENIUSそれは本当に私のために働く。 –

関連する問題