2012-02-16 136 views
4

现在,我开发了一个8080端口上的gSOAP独立服务器,它正在为SOAP RPC工作。用gSOAP独立服务器发布wsdl?

但我想回到WSDL内容WSDL文件在我的文件系统,当客户端请求的8080端口上获取WSDL。

我能做些什么来将wsdl返回给客户?

+0

经过一段时间后,我找到了在线gSOAP用户指南的解决方案:http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc19.10 – softghost 2012-02-17 17:53:38

回答

1

我用XD工具生成WSDL我的embbed版本,并将其存储使用此命令行一个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的接收到的命令:

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

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