Я попытался использовать gSOAP для доступа к веб-сервису (например, использование предоставленного WSDL для генерации тупиков C и затем использования их в приложении). Однако я нашел, что сгенерированный.c и объектные файлы являются довольно большими (несколько мегабайтов), который является проблемой во встроенной среде, где я работаю.
Вы знаете о каких-либо более простых библиотеках SOAP, или я должен отступить к универсальным генераторам XML и синтаксическим анализаторам как ezXML?
Я недавно тоже изучил этот вопрос, и лучшим вариантом, который я нашел, был gSOAP, он очень зрелый и хорошо протестированный. Однако я решил пойти по маршруту, отличному от SOAP, что было вариантом, поскольку я нахожусь как на стороне клиента, так и на стороне сервера. Перед использованием gSOAP убедитесь, что вы можете жить с их лицензией. Возможно, вам придется выпустить свой код или заплатить им, в зависимости от того, как вы его используете.
Другой вариант - Apache Axis2 / C , хотя у меня нет опыта работы с ним (я предполагаю, что он имеет такой же размер, что и gSOAP). Их клиентский API здесь . Учебник по клиентскому API находится здесь .
Если вы решите использовать анализируемый XML-маршрут, вас может заинтересовать этот вопрос SO (см. Ответы).
Вы также можете проверить boost :: spirit для проанализированного маршрута. У него есть возможность создавать небольшие, быстрые, специализированные (и общие) парсеры, если вам комфортно с C ++ (они могут быть написаны как реентерабельные, поэтому их вызов через статический объект с внешним интерфейсом "C" кошерный. ). Я могу поручиться за это в общем смысле (не только в XML). Крутая кривая обучения, но большая отдача.
Обычно мы возвращаемся к созданию XML напрямую (в основном путем конкатенации строк), когда нельзя использовать хорошую библиотеку SOAP.
Другим решением может быть переход на JSON, который (обычно) имеет меньшие накладные расходы и размеры запросов / ответов, поэтому он может быть лучше во встроенных программах. Если у вас есть только SOAP WebService, вы можете использовать прокси-скрипт на сервере, который переводит запросы JSON в запросы SOAP и ответы SOAP в ответы JSON.
Это веб-сервис, который вы создаете? В таком случае рассмотрите возможность использования REST вместо SOAP. REST намного проще, и вы можете использовать существующие, протестированные, работающие сейчас обработчики HTTP, вместо того, чтобы проходить через огромный уровень преобразования HTTP - XML - SOAP.
Если вы используете чужую веб-службу, изучите схему SOAP и / или примеры ответов. Я не могу поверить, что защищаю это, но если схема не является расширяемой или рекурсивной, вам может быть лучше использовать простой синтаксический анализатор LALR или даже сопоставление строк в необработанных ответах HTTP вместо того, чтобы пытаться анализировать SOAP или XML вообще. Это намного проще реализовать во встроенном C.
Вы смотрели Apache CXF . Он имеет несколько функций генерации кода
* Java to WSDL
* WSDL to Java
* XSD to WSDL
* WSDL to XML
* WSDL to SOAP
* WSDL to service
Более полезное руководство по созданию потребителя находится здесь .