首页 文章

使用gSOAP独立服务器发布wsdl?

提问于
浏览
4

现在,我在8080端口上开发了一个gSOAP独立服务器,它正在为SOAP RPC工作 .

但是当客户端请求在8080端口上获取wsdl时,我想在我的文件系统中返回 wsdl 文件的内容 .

我能做些什么来将wsdl归还给客户?

1 回答

  • 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;
    }
    

    因此,我将此函数配置为使用gSoap接收的所有GET命令:

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

    然后,当您的服务器收到HTTP / GET请求时,将调用您的函数并发送wsdl文件 . 如果需要,您可以在运行时读取WSDL文件并发送soap_send(),而不是像我一样在代码中嵌入WSDL .

相关问题