2012-02-16 125 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。