Stream Length und Position wirft Exception



  • moin leute,
    ich hab momentan ein problem: ich benutz folgende methode um postdaten zu senden

    public 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 du tmpstream 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.


Anmelden zum Antworten