Stream Length und Position wirft Exception
-
moin leute,
ich hab momentan ein problem: ich benutz folgende methode um postdaten zu sendenpublic string Post(string url, string data) { string vystup = null; try { //Our postvars byte[] buffer = Encoding.UTF8.GetBytes(data); string tmp = Encoding.UTF8.GetString(buffer); Stream tmpstream; //Initialisation, we use localhost, change if appliable HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url); //Our method is post, otherwise the buffer (postvars) would be useless WebReq.Method = "POST"; //We use form contentType, for the postvars. WebReq.ContentType = "application/x-www-form-urlencoded"; //The length of the buffer (postvars) is used as contentlength. WebReq.ContentLength = buffer.Length; //We open a stream for writing the postvars tmpstream = WebReq.GetRequestStream(); StreamWriter PostData = new StreamWriter(tmpstream); //Now we write, and afterwards, we close. Closing is always important! PostData.Write(data); PostData.Close(); //Get the response handle, we have no true response yet! HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse(); //Now, we read the response (the string), and output it. tmpstream = WebResp.GetResponseStream(); StreamReader Answer = new StreamReader(tmpstream); vystup = Answer.ReadToEnd(); //Congratulations, you just requested your first POST page, you //can now start logging into most login forms, with your application //Or other examples. } catch (Exception ex) { MessageBox.Show(ex.Message); } return vystup.Trim(); }
allerdings krieg ich die exceptions geworfen, wenn ich den RequestStream hole:
Length = "tmpstream.Length" hat eine Ausnahme vom Typ "System.NotSupportedException" verursacht. Position = "tmpstream.Position" hat eine Ausnahme vom Typ "System.NotSupportedException" verursacht.
kann mir jemand sagen was ich falsch mache bzw. wie ich das problem lösen kann?
gruß
car5ten
-
Hmm vielleicht uebersehe ich ja etwas aber ich kann nirgens finden wo du Position oder Length vom Stream benutzt?
Btw.: Dein Code ist EXTREM schlecht zu lesen, man brauch nicht in jeder Zeile einen Kommentar zu schreiben. Das macht die Sache naemlich unfassbar unuebersichtlich.
Weitere Tips:
1. Warum deklarierst dutmpstream
schon in der Zeile 10 wenn du es aber erst in der Zeile 20 benutzt?
2.Stream
ist eine Klasse welche das IDisposable Interface implementiert, wenn du solche Klassen hast dann benutz bitte die using-Bloecke.
3. Lokale Variablen werden in .NET(und auch in vielen anderen Sprachen) nicht gross geschrieben.