Клиентская библиотека веб-сервиса для C++

Я хотел бы реализовать клиент веб-службы для проекта в Windows. Я хочу получить информацию о веб-службе, запрос мыла и ответ мыла. Мне нужна библиотека C++, которую я могу использовать для этих целей (не wsdlpull).

Требования:

  • должна быть библиотека C++
  • может использоваться для доступа к любой веб-службе SOAP (поэтому я могу передать URL-адрес, имя веб-службы, метод веб-службы и все аргументы в качестве аргументов для вызова функции)
  • может запросить у веб-службы свой WSDL и вернуть мне доступные имена методов, аргументы методов и их типы данных
  • простая документация

Чтобы быть более конкретным: в библиотеке должны быть простые вызовы, подобные этому, для получения информации о веб-службе.

invoker.getOperations(operations);

outputXml += "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
outputXml += "<webService";
outputXml += " name=\"" + GetServiceName(&invoker) + "\"";
outputXml += ">\n";
outputXml += "\t<webMethods>\n";

Спасибо.


person csk    schedule 01.02.2012    source источник


Ответы (1)


Отраслевым стандартом для веб-сервисов C/C++ является gsoap. http://www.cs.fsu.edu/~engelen/soap.html

Обеспечивает сопоставление XML-схемы с C/C++ с помощью wsdl2h. У него хорошая документация и множество семплов в пакете. Документ также можно найти онлайн. Вы можете легко портировать свой код во многие ОС (linux, windows и т.д.)

Простой пример добавления к номеру через веб-сервис (код вызова)

#include "soapH.h"
#include "calc.nsmap"
main()
{
   struct soap *soap = soap_new();
   double result;
   if (soap_call_ns__add(soap, 1.0, 2.0, &result) == SOAP_OK)
      printf("The sum of 1.0 and 2.0 is %lg\n", result);
   else
      soap_print_fault(soap, stderr);
   soap_end(soap);
   soap_free(soap);
}

С gsoap вы выполняете работу в два этапа.

  1. Сначала создайте заглушки (например, wsdl2java) из WSDL.
  2. Затем вы вызываете заглушки со своими объектами

Также отличный фреймворк, если вы хотите создать свой сервис (действовать как сервер, а не только клиентский код).

person cateof    schedule 02.02.2012