powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / POST запрос к asp.net странице из С#
6 сообщений из 6, страница 1 из 1
POST запрос к asp.net странице из С#
    #36448296
unklave
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток,
собственное сабж...
Главное отличие от обычного post запроса заключается в использовании поля _VIEWSTATE. Поэтому такой код у меня не работает(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
       public string PostRequest()
       {
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(address);
            // Разрешаем авторедирект
            httpWebRequest.AllowAutoRedirect = true;
            // Создаем для запроса новый контейнер для хранения сессий
            httpWebRequest.CookieContainer = new CookieContainer();
            // Следующие строки итак понятны
            httpWebRequest.Method = "POST";
            httpWebRequest.ContentType = "application/x-www-form-urlencoded";
            // Переть тем как заполнять поля формы, текст конвертируем в байты
            byte[] ByteQuery = System.Text.Encoding.ASCII.GetBytes("Здесь какие-то параметры");
            // Длинна запроса (обязательный параметр)
            httpWebRequest.ContentLength = ByteQuery.Length;
            // Открываем поток для записи
            Stream QueryStream = httpWebRequest.GetRequestStream();
            // Записываем в поток (это и есть POST запрос(заполнение форм))
            QueryStream.Write(ByteQuery,  0 , ByteQuery.Length);
            // Закрываем поток
            QueryStream.Close();
            // Объект с ответом сервера
            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            // Присваиваем сессию
            httpWebResponse.Cookies = httpWebRequest.CookieContainer.GetCookies(httpWebRequest.RequestUri);
            if (httpWebResponse.Cookies != null)
            {
                // Добавляем сессию в наш контейнер для дальнейшего использования
                Cooks.Add(httpWebResponse.Cookies);
            }
            // Открываем поток для чтения
            Stream stream = httpWebResponse.GetResponseStream();
            // Читаем из потока
            StreamReader reader = new StreamReader(stream);
            // Возвращаем результат запроса
            return reader.ReadToEnd();
        }
...
Рейтинг: 0 / 0
POST запрос к asp.net странице из С#
    #36448964
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам надо форму отправить? Если да, то могу подкинуть ссылку на реализацию
...
Рейтинг: 0 / 0
POST запрос к asp.net странице из С#
    #36449481
unklave
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем то да.
Есть форма, мне ее надо заполнить и отправить)

Буду благодарен за полезные ссылки
...
Рейтинг: 0 / 0
POST запрос к asp.net странице из С#
    #36449758
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ссылок не нашел, но у меня есть код делающий это (вроде очистил от лишнего):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
 
private const string Boundary = "xYzZY";
//собираем форму в текстовом виде, параметры задаются в виде словаря .<имя параметра, значение>
 private static BinaryContainer GetPostData(IDictionary<string, string> Params, HttpFileCollectionBase files)
        {
            const string boundary = "--" + Boundary;

            BinaryContainer container = new BinaryContainer(Encoding.UTF8);

            //I do this because adding element to collection can produce unexpected side effects
            foreach (KeyValuePair<string, string> par in Params)
            {
                container.WriteLine(boundary);
                container.WriteLine(string.Format("Content-Disposition: form-data; name=\"{0}\"", par.Key));
                container.WriteLine();
                container.WriteLine(par.Value);
            }
            if (files != null)
                foreach (string sfile in files)
                {
                    var file = files[sfile];
                    container.WriteLine(boundary);
                    container.WriteLine(string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"",
                                                      sfile,
                                                      file.FileName));
                    container.WriteLine(string.Format("Content-Type: {0}", file.ContentType));
                    container.WriteLine();
                    byte[] bytes = new byte[file.ContentLength];
                    file.InputStream.Read(bytes, 0, bytes.Length);
                    container.Write(bytes);
                    container.WriteLine();
                }


            container.WriteLine(boundary);
            return container;
        }

public static string PostRequestToServerWithSpecifiedHash(string ServiceURL,  IDictionary<string, string> Params,
            HttpFileCollectionBase fileCollection)

        {
            //url for routing testing. May be better put it to config
            string url = ServiceURL;
            HttpWebRequest req =  (HttpWebRequest)WebRequest.Create(url);
            req.KeepAlive = true;
            req.Method = "POST";

            var binaryContainer = GetPostData(Params, fileCollection);
            req.ContentLength = binaryContainer.Length;
            req.ContentType = "multipart/form-data;boundary=" + Boundary;
            
            Stream reqst = req.GetRequestStream(); // add form data to request stream
            binaryContainer.Flush(reqst);

            reqst.Flush();
            reqst.Close();

            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
            Stream resst = res.GetResponseStream();

            StreamReader sr = new StreamReader(resst);
            string response = sr.ReadToEnd();

            return response;
        }
...
Рейтинг: 0 / 0
POST запрос к asp.net странице из С#
    #36453633
unklave
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Правда похожий код у меня уже был)
Ответ сам нашел. Оказывается нужно для каждой последующей страницы передавать полученный со страницы _VIEWSTATE и добавлять к нему уже нужные параметры, для этого можно использовать код выше.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
POST запрос к asp.net странице из С#
    #37175890
mletov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как раз сам ищу нечто похожее. Не подскажете, как сделать аналогично выше приведенному коду, но чтобы и в браузере отображалась страница, куда передаются данные из формы через POST.

Если более конкретно, то задача выглядит так:
Есть форма, на форме капча, которая проверяется на сервере, и только после проверки капчи данные надо отправлять на сторонний сервис с открытием страницы это сервиса, которая выдает результаты обработки переданных параметров. Короче, двойной POST.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / POST запрос к asp.net странице из С#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]