публикация wsdl с автономным сервером gSOAP?

Теперь я разработал автономный сервер gSOAP на порту 8080, и он работает для SOAP RPC.

Но я хочу возвращать wsdl содержимое файла wsdl в моей файловой системе, когда клиенты запрашивают получение wsdl через порт 8080.

что я могу сделать, чтобы вернуть wsdl клиентам?


person softghost    schedule 16.02.2012    source источник
comment
После неудачного времени я нашел решение в онлайн-руководстве пользователя gSOAP: cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc19.10   -  person softghost    schedule 17.02.2012


Ответы (1)


Я использовал инструмент xd для создания встроенной версии моего wsdl и сохранения его в файле wsdl.h с помощью этой командной строки (я делаю это в своем CMakeList.txt):

${GSOAP_ROOT_DIR}/bin/win32/xd -dwsdl ${CMAKE_CURRENT_BINARY_DIR}/${SOAP_NAME_SERVICE}.wsdl > ${CMAKE_CURRENT_BINARY_DIR}/wsdl.h

После этого я реализовал эту функцию, которую лучше вести с параметрами в GET-запросе:

int http_get(struct soap *soap)
{
  soap_response(soap, SOAP_HTML); // HTTP response header with text/html
  soap_send(soap, (const char*)wsdl);
  soap_end_send(soap);
  return SOAP_OK;
}

Итак, я настраиваю эту функцию, чтобы вести все команды GET, полученные gSoap:

.
.
.
struct soap soap;
soap_init(&soap);
soap.fget = http_get;
.
.
.

Затем, когда ваш сервер получит запрос HTTP/GET, ваша функция будет вызвана и отправит файл wsdl. Если вы хотите, вы можете прочитать файл WSDL во время выполнения и вместо этого отправить soap_send(), чтобы встроить WSDL в свой код, как это сделал я.

person Celino    schedule 21.06.2013