Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > HTTPWebRequest и HHTPWebResponse.. Что не правильн


Автор: Brodyaga 22.9.2008, 13:34
хочу получить данные с сервера...

создаю пост запрос, добавляю необходимые параметры, затем получаю ссылку на поток с ответом.
И вот в месте  где я пытаюсь прочитать из этого потока текст, выскакивает такая ошибка....

Unable to read data from the transport connection: Attempted to read or write protected memory. This is often an indication that other memory is corrupt..

нашёл в инете одну ссылку(http://www.aspcode.net/Unable-to-read-data-from-the-transport-connection.aspx), в которой сказано, что надо при формирование пост запроса добавить следующее...

Код

 CookieContainer cc = new CookieContainer();
 req.Proxy = null;
 req.UseDefaultCredentials = true;
 req.CookieContainer = cc;


добавил.. помогло но ненадолго... после получения с сервера 5 порции данных (а данные я получаю порциями) опять такая же ошибка...

с чем это вообще может быть связано?

конкретно эксепшен вылетает вот тут..

Код

       private HttpWebRequest req;
       private HttpWebResponse rsp;
       private string rspText;

       req = (HttpWebRequest)WebRequest.Create(value);
       req.KeepAlive = false;
       req.AllowAutoRedirect = false;
       CookieContainer cc = new CookieContainer();
       mimePayload = null;
       postVars = "";
       req.Method = "POST";
       req.Proxy = null;
       req.UseDefaultCredentials = true;
       req.CookieContainer = cc;
       req.ContentType = "application/x-www-form-urlencoded";

       postVars += ((postVars.Length > 0) ? "&" : "") + login + "=" + valueLogin;
       postVars += ((postVars.Length > 0) ? "&" : "") + password + "=" + valuePassword;

       Stream st = null;
       rsp = null;
       rspText = null;
       byte[] data = null;

       if (req.Method == "POST")
                data = Encoding.Default.GetBytes(postVars);

       req.ContentLength = data.Length;
       st = req.GetRequestStream();
       st.Write(data, 0, data.Length);
       st.Close();

       rsp = (HttpWebResponse)req.GetResponse();

       Stream s=rsp.GetResponseStream();

       StreamReader sr = new StreamReader(s, Encoding.GetEncoding("windows-1251"));

       if (rspText == null)
       {
             rspText = sr.ReadToEnd();  //Вот тут эксепшен :)
       }

Автор: informatik 29.9.2008, 07:43
Попробуй KeepAlive = true

Автор: Brodyaga 30.9.2008, 07:16
KeepAlive = true было изначально.. При таком раскладе идти по шагам нельзя.. сразу ошибка вылетает при записи в поток на сервер данных запроса, работало только в обычном режиме.. ну а моя проблема не исчезает...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)