2Danke
ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
1826
1826
EMPFEHLEN
-
Hallo,
ich will auf eine Homepage zugreifen die Leider immer ein
"Internal Server Error - 500" per Response Header zurück liefert in Firefox.
Natürlich kommt der Fehler auch bei meinem Programm bei der Code Zeile:
Code :1
response = (HttpWebResponse)request1.GetResponse();
"Der Remoteserver hat einen Fehler zurückgegeben: (500) Interner Serverfehler."
Wenn ich das ganze per try & catch abfange, kann der StreamReader natürlich keinen passenden Stream auffinden.
Hat Irgendjemand eine Idee? Wie ich das jetzt wie in Firefox Ignorieren kann und trotzdem an den Inhalt komme?
MFG Ronox
-
Hallo,
bist du sicher, dass der Firefox fehlerfafte Antworten ignoriert?
Ich vermute eher, der Firefox macht was richtig, was du aber im Code falsch machst.
Wie stellst du denn deine Anfrage, um an deine Seite zu kommen?MfG Turri
PS: Wenn ich helfen konnte, würde ich mich über ein Danke oder eine positive Bewertung freuen. :-)
-
Ok hier mal der komplette Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
private CookieContainer cookieContainer = new CookieContainer(); CookieCollection cookiecoll = new CookieCollection(); HttpWebRequest request; HttpWebResponse response; StreamReader sr; [...] public string plogin(string user, string pw, string server, string url) { HttpWebRequest request0 = (HttpWebRequest)HttpWebRequest.Create(server); request0.Method = "GET"; request0.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"; request0.CookieContainer = new CookieContainer(); response = (HttpWebResponse)request0.GetResponse(); cookiecoll = response.Cookies; response.Close(); HttpWebRequest request1 = (HttpWebRequest)HttpWebRequest.Create(server + url); request1.Method = "POST"; request1.Host = server.Replace("http://","").Replace("/",""); request1.ContentType = "application/x-www-form-urlencoded"; request1.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"; request1.Referer = server; request1.CookieContainer = new CookieContainer(); request1.CookieContainer.Add(cookiecoll); request1.ServicePoint.Expect100Continue = false; request1.Timeout = 30000; ASCIIEncoding encoding = new ASCIIEncoding(); byte[] loginDataBytes = encoding.GetBytes("server="+ server + url +"&user="+user+"&password="+pw+"&x=0&y=0"); request1.ContentLength = loginDataBytes.Length; Stream stream = request1.GetRequestStream(); stream.Write(loginDataBytes, 0, loginDataBytes.Length); stream.Close(); // Hier tritt der Fehler auf response = (HttpWebResponse)request1.GetResponse(); sr = new StreamReader(response.GetResponseStream()); string html = sr.ReadToEnd(); sr.Close(); response.Close(); string tmp = ""; foreach (Cookie cook in cookiecoll) { tmp = cook.ToString(); MessageBox.Show("1. Step: " + cook.ToString()); } return "\"Cookie:\" "+tmp; }
Das ist der Response Header von Firefox:
Und er zeigt mir trotzdem den Content an in Firefox.Status=Internal Server Error - 500
Transfer-Encoding=chunked
Expires=Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control=no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma=no-cache
Content-Type=text/html
Date=Tue, 01 Mar 2011 17:20:14 GMT
Server=RMSWebServer/1.0
-
Hallo,
ich sehe einen Unterschied (wie ich sonst HttpRequests verschicke) bei der Cookiebehandlung.
Ich arbeite ohne CookieCollection.
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
... cookies = new CookieContainer(); public string sendGetRequest(string url, string referer) { HttpWebRequest HttpReq = (HttpWebRequest)WebRequest.Create(url); HttpReq.Referer = referer; HttpReq.CookieContainer = cookies; HttpWebResponse response; try { response = (HttpWebResponse)HttpReq.GetResponse(); } catch (WebException ex) { .... } StreamReader reader = new StreamReader(response.GetResponseStream()); return reader.ReadToEnd(); }
Die "cookies" sind dann gefüllt, nach der GetResponse() von GET Request.
Die cookies werden nur in der Instanz der klasse gepseichert und beim nächsten Request einfach wieder mit angegeben. Responsecookies werden nicht berücksichtigt. Die waren bei mir immer leer... komischerweise...
und hier dann ein Post Request:
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
public string sendPostRequest(string url, string postData, string referer) { HttpWebRequest HttpReq = (HttpWebRequest)WebRequest.Create(url); byte[] data = Encoding.UTF8.GetBytes(postData); HttpReq.Method = "POST"; HttpReq.Referer = referer; HttpReq.CookieContainer = cookies; HttpReq.ContentType = "application/x-www-form-urlencoded"; HttpReq.ContentLength = data.Length; HttpReq.ServicePoint.Expect100Continue = false; HttpWebResponse response; try { Stream newStream = HttpReq.GetRequestStream(); newStream.Write(data, 0, data.Length); newStream.Close(); response = (HttpWebResponse)HttpReq.GetResponse(); } catch (WebException ex) { ... } StreamReader reader = new StreamReader(response.GetResponseStream()); return reader.ReadToEnd(); }
Funktioniert bei mir sehr gut.
Du kannst notfalls ja mit dem Firefox Plugin "Live Http Headers" schauen, was der Firefox über die Leitung schickt. Vielleicht gibts doch einen Unterschied zu deiner Anfrage.Geändert von Turri (02.03.11 um 08:43 Uhr)
MfG Turri
PS: Wenn ich helfen konnte, würde ich mich über ein Danke oder eine positive Bewertung freuen. :-)
-
Hi,
also ich habs natürlich mit deiner Variante probiert und mir die WebException ausgeben lassen:
Code :1 2 3 4 5 6 7 8
System.Net.WebException: Der Remoteserver hat einen Fehler zurückgegeben: (500) Interner Serverfehler. bei System.Net.HttpWebRequest.GetResponse() bei Monstergame_Bot.http.sendGetRequest(String url, String referer) in C:\Users\ronox\AppData\Local\Temporary Projects\Monstergame Bot\http.cs:Zeile 23. System.Net.WebException: Der Remoteserver hat einen Fehler zurückgegeben: (500) Interner Serverfehler. bei System.Net.HttpWebRequest.GetResponse() bei Monstergame_Bot.http.sendPostRequest(String url, String postData, String referer) in C:\Users\ronox\AppData\Local\Temporary Projects\Monstergame Bot\http.cs:Zeile 53.
Den Response Header habe Ich von einem anderen Addon, aber habe das ganze nochmal durch Http Live Headers gejagt und es kommt folgendes raus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
POST /index.php?ac=login HTTP/1.1 Host: <host> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Referer: <referer> Cookie: SSID=02f5605e94d19e9d4d85cef8b0f37e89f642d9d1 Content-Type: application/x-www-form-urlencoded Content-Length: 112 server=<post> HTTP/1.1 500 Internal Server Error Transfer-Encoding: chunked Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Type: text/html Date: Wed, 02 Mar 2011 14:07:02 GMT Server: RMSWebServer/1.0
-
Hallo,
das find ich ja echt interessant.
Ich hab gerade keine Seite da, wo ich einen Fehler 500 bekomme.
Aber du kannst ja mal versuchen, die Response in der Exception ausgeben zu lassen.
Vielleicht steht ja der SeitenCode drin.
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
HttpWebResponse response; try { // hier krachts ja... response = (HttpWebResponse)HttpReq.GetResponse(); } catch (WebException ex) { // und hier gehts weiter response = (HttpWebResponse)ex.Response; // Console.WriteLine(response.StatusCode); // Console.WriteLine(response.StatusDescription); if (response.StatusCode == HttpStatusCode.InternalServerError) { StreamReader reader = new StreamReader(response.GetResponseStream()); Console.Write(reader.ReadToEnd()); } }
Ob das funktioniert, weiß ich aber nicht.MfG Turri
PS: Wenn ich helfen konnte, würde ich mich über ein Danke oder eine positive Bewertung freuen. :-)
-
Hey du bist gut

Ich danke dir für deine Hilfe
es hat Funktioniert, etwas eigenartig, find ich.
Aber es klappt





Zitieren
Login





