Login auf einer Webseite mit c# und HTTPrequest
Möchte ich ein login auf einer website mit HTTPrequest mit c#. Ich such schon bei google und in diesem forum, aber ich habe noch einige Probleme. Heres mein code:
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
using System.Net;
using System.IO;
namespace BodytelConnection
{
///<summary>
///Interaktionslogik für MainWindow.xaml
///</summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
webBrowser1.Navigate("http://www.bodytel.com/");
}
private void loginBtn_Click(object sender, RoutedEventArgs e)
{
string benutzername = textBox_benutzername.ToString(); //used just for test
string passwort = textBox_passwort.ToString();
string cookieHeader;
passwort = changeString(passwort);
benutzername = changeString(benutzername);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.bodytel.com/");
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1;rv:15.0) Gecko/20100101 Firefox/15.0)";
req.Method = "POST";
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
req.Headers.Add("Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3");
req.Headers.Add("Accept-Encoding: gzip,deflate");
req.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");
req.KeepAlive = true;
req.Headers.Add("Keep-Alive: 300");
req.Referer = "https://secure.bodytel.com/de/mybodytel.html";
req.AllowAutoRedirect = true;
req.ContentType = "application/x-www-form-urlencoded";
byte[] bytes = Encoding.ASCII.GetBytes("[email protected]%password=xxxxxstep=login");
req.ContentLength = bytes.Length;
using (Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
WebResponse resp = req.GetResponse();
cookieHeader = resp.Headers["Set-cookie"];
webBrowser1.Navigate("https://secure.bodytel.com/de/mybodytel.html");
}
private string changeString(string myString)
{
myString = myString.Replace("System.Windows.Controls.TextBox: " ,"");
return myString;
}
}
}
Kann ich nicht anmelden, um die website, und ich weiß nur nicht, wo das problem ist. Wie kann ich die Anmeldung an dieser site?
Danke 😉
Sie nicht brauchen, & statt %?
ja, du
Versuchen Sie es mit Fiddler (fiddler2.com) um das problem zu analysieren.
oder besser wireshark, fiddler, einige Dekodierung automatisch. Also Sie sehen nicht die tatsächlichen übermittelten Daten in einigen Fällen.
[email protected]&password=xxxxx&step=login
. % reserviert ist, in die url-Codierung für hexadezimal-Wert-Darstellungen.ja, du
re right :P didnt noticed that but it still don
t-Arbeit. Es zeigt mir immer falscher Benutzernamen und ein Passwort. ich habe auch versucht, den Benutzernamen: hans-neo%40web.de (Stopfer erzählte mir, dass)Versuchen Sie es mit Fiddler (fiddler2.com) um das problem zu analysieren.
oder besser wireshark, fiddler, einige Dekodierung automatisch. Also Sie sehen nicht die tatsächlichen übermittelten Daten in einigen Fällen.
InformationsquelleAutor nichop | 2012-09-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Asuming es ist nichts falsch mit SSL und erhalten Sie tatsächlich eine gültige Antwort vom server, die Sie könnten versuchen, richtig zu codieren Ihre Werte:
ich habe bereits eingeführten System.Web; aber ich kann nicht finden, HttpUtility. Im mit .NET 4.5
Okay ich benutzte System.Net.WebUtility.HtmlDecode nun die die gleiche sein sollte. Immer noch nicht funktionieren 🙁 Danke für Eure schnelle Antworten 🙂
InformationsquelleAutor huysentruitw
Habe ich das problem gelöst.
Hier der code:
InformationsquelleAutor nichop
Sieht aus wie Sie die falsche URL zum login. Wenn ich das login-form in Chrom und schauen, was es sendet, sieht das so aus:
Chrome Networktab
So Ihrer Anmeldung in über "https://secure.bodytel.com/de/mybodytel.html". Ich weiß nicht, ob HttpWebRequest verwalten können SSL-Verbindungen so einfach, aber Sie müssen, um diesen link zu verwenden beim erstellen des WebRequest-Objekt.
req.Referer = "https://secure.bodytel.com/de/mybodytel.html";
Ich denke, wenn SSL fehlschlägt, wird
HttpWebRequest
werfen würde eineWebException
oderIOException
Ich bin nicht ganz sicher über den Referer-Header, aber ich könnte mir vorstellen, wenn er verbindet mit bodytel.com, wird es nicht sein, eine SSL-Verbindung. In jedem Fall, seinen Antrag unterscheidet sich von dem geschickt von Chrome, also wenn er sucht, den Fehler zu finden, ich denke, er sollte zuerst versuchen, es zu senden, genau wie der browser. Wenn das nicht funktioniert, kann er sich Gedanken über SSL fehlschlagen.
InformationsquelleAutor Wutz