LINUX.ORG.RU

boost::asio С++ linux создание POST-запросов


0

1

Добрый день! Не подскажете, как можно организовать POST-запросы к http серверу? По сути необходимо реализовать клиент, который будет отправлять запросы на сервер и обрабатывать ответы от сервера. Вроде как хорошим средством для решения подобных задач является boost::asio . Но разработанный клиент будет являться частью библиотеки, которая будет ставится на ПО заказчиков, не будет ли проблем с boost::asio на машинах заказчика?Что делать, если проблемы возможны?Использовать голые сокеты? Никогда не работала с boost::asio. Не подскажете нужно ли ее ставить,как проверить,установлена ли она(Red hat 2.4)), как собирать с ней свою библиотеку с клиентом, есть ли где пример именно для моей задачи (клиент с POST-запросами). И еще один момент...Запросы от клиента и ответа от сервера приходят в формате XML по сути? Не подскажете, как их удобнее обрабатывать? Опять же не будет ли в связи с этим проблем на ПО заказчика?


Нннда, ну и вопросец.

Начнем по пунктам.

1. boost::asio поможет быстро написать взаимодействие по TCP. Если хочеться отправлять POST-запросы, необходимо реализовывать протокол HTTP. Не надо думать, что в boost::asio реализован HTTP.

2. Если ПО является частью библиотеки, а не самостоятельным приложением, и этой библиотекой будет пользоваться кто-то другой, то проблемы будут. Но они будут связаны не с boost::asio, а c ABI в целом.

3. Парсить XML не проблема, есть куча библиотек.

//Может ТС лучше взять библиотеку Qt, возможности класса QTcpSocket конечно не такие разухабистые как у библиотеки boost::asio, но зато все есть «из коробки» и HTTP и XML и все это с кучей примеров.

pathfinder ★★★★
()
Ответ на: комментарий от Masha

Если не осилили Qt, то к бусту лучше не подходить. А вообще в туториалах boost'а есть примеры работы с хттп через асио

gavlig ★★★
()
Ответ на: комментарий от pathfinder

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

Masha
() автор топика

Хм, а в чем проблема-то? Открываем сокет, пишем туда тело запроса, принимаем ответ, парсим.

Anon
()
Ответ на: комментарий от Masha

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

Я вообще с трудом понимаю, как можно ответить на вопрос «проблем не будет?», если исходные не известны, есть какой-то сферический в вакууме клиент, который входит в состав библиотеки и всё.

Могу пованговать: проблемы будут.

gavlig ★★★
()
Ответ на: комментарий от Masha

Хочется не повторять ошибок тех

А я хочу миллион долларов. Кто-нибудь дайте.

Нормально не повторять можно только те ошибки, природу которых ты очень хорошо понимаешь. Поднятая тема в своей постановке слишком сумбурна, во многом из-за того, что ТС имеет очень сумбурное представление о рассматриваемых вещах и о том, ответы на какие именно вопросы он хочет получить.

Иметь сумбурное представление, это нормально. Не вижу в этом ничего плохого. Но ТС лучше в таком случае не заниматься троллингом на ЛОРе, а взяться за непосредственное написание кода.

pathfinder ★★★★
()
Последнее исправление: pathfinder (всего исправлений: 1)

ТС юзай libcurl и будет тебе счастие.

MikeDM ★★★★★
()

boost::asio идет в h файлах, но она зависит от boost_system.so, на древнем RH её не будет или будет древней версии, поэтому проще линковаться статикой

Reset ★★★★★
()

Хотел что-то написать, но затем передумал.

nanoolinux ★★★★
()
Ответ на: комментарий от Reset

asio существует в двух вариантах: есть boost::asio у которой есть зависимости от boost, а есть просто asio, без зависимостей.

bjorn
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.