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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> http запрос в 1-2 строки, нужен удобный класс для работы с запр. 
V
    Опции темы
ShadowDancer
Дата 6.1.2010, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



День добрый! Я пришел из мира Delphi с его TIdHTTP.
Если мне хотелось получить страницу, то мне было необходимо было сделать одно обращение IdHTTP.Get('http://ya.ru');
Если я захотел бы отправить данные, то код увеличился бы не намного IdHTTP.Post('http://serv.ru/post.php', SL);, где SL - объект с параметрами.
В C#, стандартными средствами нужно определять множество настроек, перед тем как сделать запрос.
А есть ли какая-либо библиотека или класс, чтобы упростить мне жизнь и выполнять запросы как и в Delphi, за одну-две строки?
Спасибо!
PM MAIL   Вверх
ShadowDancer
Дата 7.1.2010, 04:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Для удобной и быстрой работы с GET-запросами нашел класс HTTPGet - http://www.goldb.org/httpgetcsharp.html
Теперь осталось найти класс для POST запросов.
PM MAIL   Вверх
jonie
Дата 7.1.2010, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



имхо судя по коду плохой класс
Этот метод:
Код

    private string GetEscapedBody()
    {  // HTML escaped chars
...

легко заменяется на HttpUtility.UrlEncode, HttpUtility.UrlPathEncode, System.Web.HttpUtility.HtmlDecode....

Это сообщение отредактировал(а) jonie - 7.1.2010, 21:22


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ivashkanet
Дата 8.1.2010, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



PM MAIL WWW ICQ   Вверх
ShadowDancer
Дата 9.1.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да, WebClient - это хорошо, но он ведь не поддерживает Cookies?
В самом вопросе я ничего не сказал о поддержке кук, но они нужны...
PM MAIL   Вверх
nikitao
Дата 9.1.2010, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



HttpWebRequest и HttpWebResponse.


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
ShadowDancer
Дата 11.1.2010, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вопрос задавал, видимо из очень большой лени, т.к. хотелось все и сразу, да еще и с рюшечками. Код пришлось писать самому.

Код

private string hGet(string url, CookieContainer coo)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@url);
            //CookieContainer cookies = new CookieContainer();
            request.CookieContainer = coo;

            request.Method = "GET";

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            coo = request.CookieContainer;
            System.IO.Stream stream = response.GetResponseStream();
            System.IO.StreamReader sr = new System.IO.StreamReader(stream, Encoding.UTF8);

            return sr.ReadToEnd();
        }

private string hPost(string url, string pData, CookieContainer coo)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@url);
            request.CookieContainer = coo;

            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";

            byte[] sentData = Encoding.UTF8.GetBytes(pData);
            request.ContentLength = sentData.Length;

            System.IO.Stream sendStream = request.GetRequestStream();
            sendStream.Write(sentData, 0, sentData.Length);
            sendStream.Close();

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            coo = request.CookieContainer;
            System.IO.Stream stream = response.GetResponseStream();
            System.IO.StreamReader sr = new System.IO.StreamReader(stream, Encoding.UTF8);

            return sr.ReadToEnd();
        }


Пример вызова такого кода, как я хотел:

Код

CookieContainer cookie = new CookieContainer();
hGet("http://bobrdobr.ru", cookie);
string ans = hPost("http://bobrdobr.ru/login/", "username="+login+
"&password="+pass+"&remember_user=on&next=/", cookie);


Тут куки сами обновляются, как я и хотел + с запросами теперь работать очень легко (ага, как в TIdHTTP).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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