HTTP в C++ приложениях
От: jedi Мухосранск  
Дата: 31.10.06 07:57
Оценка:
Привет всем,

поиск здесь и по гуглю ничего внятного не дал. Посему решил провести небольгой соцопрос
Кто чем пользуется для работы с HTTP в своих приложениях?

Что нужно: возможность выполнения асинхронных запросов, возможность отмены, показ прогресса (или легкая воможность прикрутить оный).
Основное требование — высокоуровневость и простота использования, вместе с тем достаточная гибкость и возможность тонкой настройки.

Всем сасибо.
Re: HTTP в C++ приложениях
От: astral_marine  
Дата: 31.10.06 08:36
Оценка:
Посмотрите:
— Встраевыемый Internet Explorer в окно, как ActiveX
— WinInet functions
— cURL

Остальной пользовательский интерфейс пишется самостоятельно
Re[2]: HTTP в C++ приложениях
От: jedi Мухосранск  
Дата: 31.10.06 08:52
Оценка:
Здравствуйте, astral_marine, Вы писали:

_>Посмотрите:

_>- Встраевыемый Internet Explorer в окно, как ActiveX
_>- WinInet functions
_>- cURL

_>Остальной пользовательский интерфейс пишется самостоятельно


cURL по определенным причинам использовать не могу — иначе бы не спрашивал).
Internet Explorer мне не нужен, явный оверкилл, мне просто GET запрос сделать надо.

А ты реально пробовал WinInet использовать в асинхронном режиме или просто так сказал?
Re: HTTP в C++ приложениях: уточнение
От: jedi Мухосранск  
Дата: 31.10.06 08:56
Оценка:
Здравствуйте, jedi, Вы писали:

J>Что нужно: возможность выполнения асинхронных запросов, возможность отмены, показ прогресса (или легкая воможность прикрутить оный).

J>Основное требование — высокоуровневость и простота использования, вместе с тем достаточная гибкость и возможность тонкой настройки.

Под "показом прогресса" понимается не ГУЙ с прогресс баром), а просто какой-то колбек позволяюший самому такой гуй прикрутить. А то тут меня уже неправильно поняли.

P.S. Я не совсем ламер, так что не нужно ответов типа кури WinInet, cURL итп. Мне просто интересно кто что использует — достаточно
высокоуровневое, стабильное, настраиваемое, написанное в С++ стиле.

Спасибо.
Re: HTTP в C++ приложениях
От: Slava Tutushkin Россия  
Дата: 31.10.06 08:56
Оценка:
Здравствуйте, jedi, Вы писали:

J>Кто чем пользуется для работы с HTTP в своих приложениях?

Я в ближайшее время планирую попробовать соответствующие классы из wxWidgets. По описанию выглядит довольно неплохо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: HTTP в C++ приложениях
От: jedi Мухосранск  
Дата: 31.10.06 09:05
Оценка:
Здравствуйте, Slava Tutushkin, Вы писали:

ST>Здравствуйте, jedi, Вы писали:


J>>Кто чем пользуется для работы с HTTP в своих приложениях?

ST>Я в ближайшее время планирую попробовать соответствующие классы из wxWidgets. По описанию выглядит довольно неплохо.

Уже ближе к делу). Смотрел некоторое время назад. Нет (или не понял как) возможности асинхронной работы — те запустить например десяток одновременных даунлоадов в одном потоке.

Но все равно спасибо , посмотрю мож че в последней версии изменилось.
Re: HTTP в C++ приложениях
От: Константин Л. Франция  
Дата: 31.10.06 09:26
Оценка: -1
Здравствуйте, jedi, Вы писали:

J>Привет всем,


J>поиск здесь и по гуглю ничего внятного не дал. Посему решил провести небольгой соцопрос

J>Кто чем пользуется для работы с HTTP в своих приложениях?

J>Что нужно: возможность выполнения асинхронных запросов, возможность отмены, показ прогресса (или легкая воможность прикрутить оный).

J>Основное требование — высокоуровневость и простота использования, вместе с тем достаточная гибкость и возможность тонкой настройки.

J>Всем сасибо.


можно посмотреть MSXML4::IXMLHTTPRequest/IServerXMLHTTPRequest2

асинхронность есть, мониторинга прогресса нету
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: HTTP в C++ приложениях: уточнение
От: algol Россия about:blank
Дата: 31.10.06 09:32
Оценка:
Здравствуйте, jedi, Вы писали:

J>Под "показом прогресса" понимается не ГУЙ с прогресс баром), а просто какой-то колбек позволяюший самому такой гуй прикрутить. А то тут меня уже неправильно поняли.


Ну тогда это URLDownloadToFile, URLOpenStream и прочие URL моникеры.
Re[2]: HTTP в C++ приложениях
От: jedi Мухосранск  
Дата: 31.10.06 09:33
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>можно посмотреть MSXML4::IXMLHTTPRequest/IServerXMLHTTPRequest2


КЛ>асинхронность есть, мониторинга прогресса нету


Спасибо, посмотрю. Правда смущает, то что уж очень микрософто-зависимо — сейчас это не важно, но есть перспектива переноса проги под линух и мак.

Так что забыл еще одно требование — кроссплатформенность между основными платформами (палмы и симбианы не важны
Re[3]: HTTP в C++ приложениях: уточнение
От: jedi Мухосранск  
Дата: 31.10.06 09:36
Оценка:
Здравствуйте, algol, Вы писали:

A>Здравствуйте, jedi, Вы писали:


J>>Под "показом прогресса" понимается не ГУЙ с прогресс баром), а просто какой-то колбек позволяюший самому такой гуй прикрутить. А то тут меня уже неправильно поняли.


A>Ну тогда это URLDownloadToFile, URLOpenStream и прочие URL моникеры.


Интересно, но не в кассу. Мне нужна гибкость, те возможность задания хидеров итп. Слишком высокоуровнево
Да и не кроссплатформенно.

Понимаю, что я привередливый. Но ведь есть где-то же библиотека моей мечты неужели до сих пор на С++ ничего подобного не написано?
Re: Добавил голосование
От: jedi Мухосранск  
Дата: 31.10.06 09:48
Оценка:
Высказывайтесь и будет вам щастье
Автор: jedi
Дата: 31.10.06
Вопрос: Подробности здесь http://rsdn.ru/Forum/Message.aspx?mid=2190942
Re[3]: HTTP в C++ приложениях
От: olexandr Новороссия http://demotivation.me/images/20140818/lxz0l278b9ep.jpg
Дата: 31.10.06 09:53
Оценка:
Здравствуйте, jedi, Вы писали:

J>Internet Explorer мне не нужен, явный оверкилл, мне просто GET запрос сделать надо.

Ну так и послать GET и жлать ответа или прибить ожидание когда уже не надо ждать
Некроссплатформенность маловероятна (c) Sheridan
...трава никак не влияет, разве что срывает покровы барьеров... (с) мыщъх
Re[3]: HTTP в C++ приложениях
От: Сергей  
Дата: 31.10.06 10:00
Оценка:
Здравствуйте, jedi, Вы писали:

J>Так что забыл еще одно требование — кроссплатформенность между основными платформами (палмы и симбианы не важны


В Qt что-то такое должно быть. Но Qt стоит денег.
Re[4]: HTTP в C++ приложениях
От: jedi Мухосранск  
Дата: 31.10.06 10:03
Оценка:
Здравствуйте, olexandr, Вы писали:

J>>Internet Explorer мне не нужен, явный оверкилл, мне просто GET запрос сделать надо.

O>Ну так и послать GET и жлать ответа или прибить ожидание когда уже не надо ждать

В-первых не кроссплатформенно, как я уже уточнил. Но это не самое страшное.

Internet Explorer имеет кучу недостаков:
а) он может просто не стоять у пользователя
б) я завишу от его настроек — прокси, сертификаты итп. Понятно, что все настраивается, но это может затронуть другие приложения.
в) это ОВЕРКИЛЛ. мне не нужен броузер, мне нужно выполнить простой GET запрос с возможностью отследить прогресс и отменить в случае необходимости.
г) это не стандартный С++, а COM со всеми вытекающими.

Если бы мне нужен был IE я бы взял его и использовал бы, не создавая этого топика

Все равно спасибо за высказанное мнение
Re[4]: HTTP в C++ приложениях
От: jedi Мухосранск  
Дата: 31.10.06 10:05
Оценка:
Здравствуйте, Сергей, Вы писали:

С>В Qt что-то такое должно быть. Но Qt стоит денег.


Да, наверное есть. Но тут тоже проблема — я буду вынужден таскать за собой (и покупать) QT. Сомневаюсь, что это библиотеку отделно от него можно использовать. Все равно спасибо — еще одна версия в копилку
Re[4]: HTTP в C++ приложениях: уточнение
От: algol Россия about:blank
Дата: 31.10.06 10:12
Оценка:
Здравствуйте, jedi, Вы писали:

A>>Ну тогда это URLDownloadToFile, URLOpenStream и прочие URL моникеры.

J>Интересно, но не в кассу. Мне нужна гибкость, те возможность задания хидеров итп. Слишком высокоуровнево

С хидерами нет проблем — IHttpNegotiate::BeginningTransaction, и все остальное тоже делается.

J>Да и не кроссплатформенно.


Так бы сразу и сказали.
Re[3]: HTTP в C++ приложениях
От: Slava Tutushkin Россия  
Дата: 31.10.06 10:12
Оценка:
Здравствуйте, jedi, Вы писали:

J>>>Кто чем пользуется для работы с HTTP в своих приложениях?

ST>>Я в ближайшее время планирую попробовать соответствующие классы из wxWidgets. По описанию выглядит довольно неплохо.
J>Уже ближе к делу). Смотрел некоторое время назад. Нет (или не понял как) возможности асинхронной работы — те запустить например десяток одновременных даунлоадов в одном потоке.
Это ещё надо посмотреть, как оно работает, кстати.
Вопрос в том, как ведёт себя GetInputStream из wxHTTP. Я фантазирую, что оно сразу возвращает управление, а потом, при необходимости, блокируется при чтении из возвращённого потока.
Эти фантазии имеют под собой кое-какую основу: у wxInputStream есть метод CanRead, который, в соответствии с документацией, сообщает, будет ли блок при вызове Read.

В общем, при первом взгляде на документацию, всё выглядит асинхронным.
Re[4]: HTTP в C++ приложениях
От: jedi Мухосранск  
Дата: 31.10.06 10:16
Оценка:
Здравствуйте, Slava Tutushkin, Вы писали:

ST>Здравствуйте, jedi, Вы писали:


ST>Эти фантазии имеют под собой кое-какую основу: у wxInputStream есть метод CanRead, который, в соответствии с документацией, сообщает, будет ли блок при вызове Read.


Это не асинхронность Что мне это CanRead в цикле вызывать? Или Sleep делать?
Нужны уведомления (те вызов колбека) и/или (даже лучше) что-то похожее на ACE-совский Reactor.
Re[5]: HTTP в C++ приложениях
От: Slava Tutushkin Россия  
Дата: 31.10.06 10:23
Оценка:
Здравствуйте, jedi, Вы писали:

ST>>Эти фантазии имеют под собой кое-какую основу: у wxInputStream есть метод CanRead, который, в соответствии с документацией, сообщает, будет ли блок при вызове Read.

J>Это не асинхронность Что мне это CanRead в цикле вызывать? Или Sleep делать?
J>Нужны уведомления (те вызов колбека) и/или (даже лучше) что-то похожее на ACE-совский Reactor.

Ооокей, а ещё есть вот такое:

wxSocket events

wxSOCKET_INPUT     There is data available for reading.
wxSOCKET_OUTPUT     The socket is ready to be written to.
wxSOCKET_CONNECTION     Incoming connection request (server), or successful connection establishment (client).
wxSOCKET_LOST     The connection has been closed.


В общем, всё равно всё хорошо.
Re[6]: HTTP в C++ приложениях
От: jedi Мухосранск  
Дата: 31.10.06 10:30
Оценка:
Здравствуйте, Slava Tutushkin, Вы писали:

ST>
ST>wxSocket events

ST>wxSOCKET_INPUT     There is data available for reading.
ST>wxSOCKET_OUTPUT     The socket is ready to be written to.
ST>wxSOCKET_CONNECTION     Incoming connection request (server), or successful connection establishment (client).
ST>wxSOCKET_LOST     The connection has been closed.
ST>


ST>В общем, всё равно всё хорошо.


Неа (вредный я)... Это я должен на уровень сокетов спуститься. Если так то нафига мне вообще специальный HTTP класс? Я могу и руками по HTTP общаться, вот только геморно это. Да и как быть с тем же HTTPS? А с асинхронной отсылкой запроса или приемом респонз хидеров? А с резолвингом днс перед подключением, а с самим подключением? — то что ты показал будет работать только во время приема Response stream-а.

В общем полумеры не нужны, интересует ultimate solution
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.