Autor Beitrag
BlackMatrix
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: Di 24.08.10 23:19 
Ich bekomme gerade eine Fehlermeldung, die ich bisher noch nie bekommen habe.

Ich versuche mich bei einem Portal einzuloggen und führe einen Postrequest durch.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Method = "POST";
            request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8";
            request.CookieContainer = cookiecontainer;
            request.ContentType = "application/x-www-form-urlencoded";
            byte[] loginDataBytes = ASCIIEncoding.ASCII.GetBytes(sendestring);
            request.ContentLength = loginDataBytes.Length;
            Stream stream = request.GetRequestStream();
            stream.Write(loginDataBytes, 0, loginDataBytes.Length);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();


Bei HttpWebResponse response = (HttpWebResponse)request.GetResponse(); erhalte ich folgende Exception:

Zitat:
ProtocolViolationException
Sie müssen ContentLength-Byte für den Anforderungsstream schreiben, bevor Sie [Begin]GetResponse aufrufen.


Worin liegt der Fehler?

MfG BlackMatrix
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mi 25.08.10 00:29 
Ich weiß nicht, ob das den Fehler ausgelöst hat, aber du hast vergessen, den Request-Stream zu schließen. Laut der Dokumentation sollte das getan werden.
BlackMatrix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: Mi 25.08.10 01:22 
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
Ich weiß nicht, ob das den Fehler ausgelöst hat, aber du hast vergessen, den Request-Stream zu schließen. Laut der Dokumentation sollte das getan werden.


Schließe ich den Stream vor   HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Bekomme ich folgende Fehlermeldung:

Zitat:
Der Remoteserver hat einen Fehler zurückgegeben: (417) Expectation Failed.


Schließe ich den Stream nicht, kommt die oben genannte Fehlermeldung.
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Mi 25.08.10 08:04 
Der Remoteserver hat einen Fehler zurückgegeben: (417) Expectation Failed.

Also, der Stream muss geschlossen werden, da hat @Yogu Recht.

Der Fehler ist mir schon einmal bei einem früheren Post untergekommen, der sich um das gleiche Thema dreht. Deshalb weiss ich, woran es liegt. Du musst nur eine Property des Webrequests auf false stellen.

ausblenden C#-Quelltext
1:
request.ServicePoint.Expect100Continue = false;					

Kannst mal googeln, was diese Property macht.

Ansonsten mal den Link auf das andere Posting:
www.c-sharp-forum.de...20&postorder=asc

LG, Marko

Für diesen Beitrag haben gedankt: BlackMatrix
BlackMatrix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: Mi 25.08.10 10:10 
user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
Der Remoteserver hat einen Fehler zurückgegeben: (417) Expectation Failed.

Also, der Stream muss geschlossen werden, da hat @Yogu Recht.

Der Fehler ist mir schon einmal bei einem früheren Post untergekommen, der sich um das gleiche Thema dreht. Deshalb weiss ich, woran es liegt. Du musst nur eine Property des Webrequests auf false stellen.

ausblenden C#-Quelltext
1:
request.ServicePoint.Expect100Continue = false;					

Kannst mal googeln, was diese Property macht.

Ansonsten mal den Link auf das andere Posting:
www.c-sharp-forum.de...20&postorder=asc

LG, Marko


Streamclose ist nicht unbedingt notwendig, aber deine Property machts :]

Vielen Dank.