Hallo Leute,
wir haben zur Zeit ein ziemlich großes Problem. Zuerst muss ich anmerken das wir noch ziemliche Anfänger auf dem
C#-Gebiet sind. Wir versuchen in unserem Projekt auf den Inhalt einer WebSeite zuzugreifen. Dazu müssen wir uns zuerst
automatisch bei der Website einloggen, um dann auf die entsprechende Seite zu gelangen.
Als Beispiel dafür könnte man den Zugriff auf einen speziellen Thread in einem Forum nehmen, der nur für eingeloggte User
sichtbar ist. Man muss sich zuerst einloggen um die Seite überhaupt eingezeigt zu bekommen. Das wollen wir nun in unserem
Programm machen.
Unsere erste Idee war es den Zugriff über ein Cookie zu machen, allerdings verliefen unsere Bemühungen in diesem
Bereich im Sande. Nun haben wir ein Programm erstellt das per WebRequest auf die Website zugreift und lesen damit den
Quellcode der Seite aus. Über PreAuthenticate + NetworkCredentials sollten dem Server Username und Password übergeben
werden.
Das Programm lässt sich nun ohne Fehler ausführen, jedoch gelingt uns das einloggen nicht und wir
bekommen nur den Quellcode der Seite auf die wir weitergeleitet werden (als ob wir nicht eingeloggt wären -->Logout Seite).
Der Server reagiert also praktisch überhaupt nicht auf unseren Login-Versuch.
Hier unser bisheriger Code:
Mittlerweile haben wir auch noch eine zweite Methode gefunden, die allerdings genau das selbe Ergebnis liefert wie die Vorherige. Hier der Neue:
Für schnelle Hilfe wären wir sehr dankbar, da wir unter starkem Zeitdruck stehen.
Liebe Grüße,
Maatze
wir haben zur Zeit ein ziemlich großes Problem. Zuerst muss ich anmerken das wir noch ziemliche Anfänger auf dem
C#-Gebiet sind. Wir versuchen in unserem Projekt auf den Inhalt einer WebSeite zuzugreifen. Dazu müssen wir uns zuerst
automatisch bei der Website einloggen, um dann auf die entsprechende Seite zu gelangen.
Als Beispiel dafür könnte man den Zugriff auf einen speziellen Thread in einem Forum nehmen, der nur für eingeloggte User
sichtbar ist. Man muss sich zuerst einloggen um die Seite überhaupt eingezeigt zu bekommen. Das wollen wir nun in unserem
Programm machen.
Unsere erste Idee war es den Zugriff über ein Cookie zu machen, allerdings verliefen unsere Bemühungen in diesem
Bereich im Sande. Nun haben wir ein Programm erstellt das per WebRequest auf die Website zugreift und lesen damit den
Quellcode der Seite aus. Über PreAuthenticate + NetworkCredentials sollten dem Server Username und Password übergeben
werden.
Das Programm lässt sich nun ohne Fehler ausführen, jedoch gelingt uns das einloggen nicht und wir
bekommen nur den Quellcode der Seite auf die wir weitergeleitet werden (als ob wir nicht eingeloggt wären -->Logout Seite).
Der Server reagiert also praktisch überhaupt nicht auf unseren Login-Versuch.
Hier unser bisheriger Code:
Code:
public static void Main()
{
//Webrequest wird gestartet
WebRequest request = WebRequest.Create("http://www.zmp.de/login/default.asp"); //Default-Loginseite
//"http://www.zmp.de/milchvbereich/wk.asp" = die Unterseite auf die wir eigentlich zugreifen wollen
//Sendet die Credentials ohne Aufforderung des Servers
request.PreAuthenticate = true;
//Username und Passwort werden definiert
string strUserName = "****";
string strPassword = "****";
//Network.Credentials werden übergeben
NetworkCredential networkCredential = new NetworkCredential(strUserName, strPassword);
request.Credentials = networkCredential;
WebResponse response = request.GetResponse();
//DataStream wird geöffnet
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine(responseFromServer);
//Schreibt Antwort in TXT-Datei
StreamWriter WStream = new StreamWriter("test.txt");
WStream.Write(responseFromServer);
WStream.Close();
reader.Close();
dataStream.Close();
response.Close();
Console.ReadLine();
}
Mittlerweile haben wir auch noch eine zweite Methode gefunden, die allerdings genau das selbe Ergebnis liefert wie die Vorherige. Hier der Neue:
Code:
class Programm
{
private static HttpWebRequest request;
private static HttpWebResponse response;
public static void Main()
{
string requestUrl = "http://www.zmp.de/login/default.asp";
//Diese Parameter werden per Post Methode übergeben
string requestParameter = "UserID=****&Password=****&Ziel=&Url=&Lizenz=&Titel=&Login=Login&Anmelden=Hier einloggen";
request = (HttpWebRequest)WebRequest.Create(requestUrl);
#region Schreib Werte in den RequestStream der an die URL geschickt wird
byte[] parameter = Encoding.UTF8.GetBytes(requestParameter);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = parameter.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(parameter, 0, parameter.Length);
requestStream.Close();
#endregion
//Holt sich die Antwort
response = (HttpWebResponse)request.GetResponse();
#region Liest die Antwort (ResponseStream) und gibt sie auf der Console aus
Stream responseStream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream);
string Ausgabe = streamReader.ReadToEnd();
Console.WriteLine(streamReader.ReadToEnd());
StreamWriter WStream = new StreamWriter("test.html");
WStream.Write(Ausgabe);
streamReader.Close();
responseStream.Close();
WStream.Close();
#endregion
}
}
Für schnelle Hilfe wären wir sehr dankbar, da wir unter starkem Zeitdruck stehen.
Liebe Grüße,
Maatze