Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Периодическая послыка POST запросов, Второй цикл выдает ошибку 
:(
    Опции темы
TheDestroyer
Дата 19.6.2011, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 5.11.2007

Репутация: нет
Всего: нет



Здравствуйте!

Пытаюсь периодически посылать POST запросы для получения информации с сервера. Проблема в том, что на первом цикле все нормально, а вот второй цикл while() выдает ошибку на строке
Код

sendStream.Write(sentData, 0, sentData.Length);

Ошибка : The request was aborted: The connection was closed unexpectedly.

Вот код:
Код
private void button1_Click(object sender, EventArgs e)
        {
System.Net.WebResponse POSTresult;
System.IO.Stream stream;
System.IO.StreamReader sr;
string s;
Uri url;
string request;
byte[] sentData, sentData1;
System.IO.Stream sendStream, sendStream1;
 
            url = new Uri(textBox1.Text);
            /* POST запрос */
            HttpWebRequest reqPOST = (HttpWebRequest)WebRequest.Create(url);
            HttpWebRequest reqPOST1 = (HttpWebRequest)WebRequest.Create(url);
            // Уберем из Headers заголовок Expect100Continue
            System.Net.ServicePointManager.Expect100Continue = false;

            reqPOST.Method = "POST"; // Устанавливаем метод передачи данных в POST
            reqPOST1.Method = "POST"; // Устанавливаем метод передачи данных в POST
            reqPOST.Timeout = 120000; // Устанавливаем таймаут соединения
            reqPOST1.Timeout = 120000; // Устанавливаем таймаут соединения
            reqPOST.ContentType = "application/x-www-form-urlencoded"; // указываем тип контента
            reqPOST1.ContentType = "application/x-www-form-urlencoded"; // указываем тип контента
            // передаем список пар параметров / значений для запрашиваемого скрипта методом POST

            // выставим заголовки (Headers)
            reqPOST = SetHeaders(reqPOST);
            reqPOST1 = SetHeaders(reqPOST1);
            
            // формируем 1й POST запрос
            request = "action=get";
            sentData = Encoding.GetEncoding(1251).GetBytes(request);
            reqPOST.ContentLength = sentData.Length;

            // формируем 2й POST запрос
            request = "onLoad=%5Btype%5D&action=get";
            sentData1 = Encoding.GetEncoding(1251).GetBytes(request);
            reqPOST1.ContentLength = sentData1.Length;

            stop = false;
            while (!stop)
            {
                //отсылаем 1й POST запроc
                sendStream = reqPOST.GetRequestStream();
                sendStream.Write(sentData, 0, sentData.Length);
                sendStream.Close();

                // отсылаем 2й POST запрос
                //request = "onLoad=[type Function]&action=getPrizes";
                
                sendStream1 = reqPOST1.GetRequestStream();
                sendStream1.Write(sentData1, 0, sentData1.Length);
                sendStream1.Close();

                // читаем ответ 1
                System.Net.WebResponse POSTresult = reqPOST.GetResponse();
                System.IO.Stream stream = POSTresult.GetResponseStream();
                System.IO.StreamReader sr = new System.IO.StreamReader(stream);
                string s = sr.ReadToEnd();
                textBox2.Text += s;

                // читаем ответ 2
                POSTresult = reqPOST1.GetResponse();
                stream = POSTresult.GetResponseStream();
                sr = new System.IO.StreamReader(stream);
                s = sr.ReadToEnd();
                //Console.WriteLine(s);
                textBox2.Text += s;

                Thread.Sleep(10000);
            } // while
        }

Из-за того, что HttpWebRequest нельзя использовать дважды для разных запросов приходится использовать два почти одинаковых для двух POST запросов.
Подскажите пожалуйста, как избежать ошибки на последующих циклах работы? 


Это сообщение отредактировал(а) TheDestroyer - 19.6.2011, 19:50
PM MAIL   Вверх
TheDestroyer
Дата 19.6.2011, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 5.11.2007

Репутация: нет
Всего: нет



Проблему решил.
While надо было начинать с первого HttpWebRequest reqPOST.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0636 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.