2012-02-16 12 views
4

今、私は8080ポートにgSOAPスタンドアロンサーバーを開発しました。これはSOAP RPCのために働いています。gSOAPスタンドアロンサーバーでwsdlを公開していますか?

しかし、私は、クライアントが8080ポートでWSDLを取得するために要求したときに、私のファイルシステム内WSDLファイルのWSDLコンテンツを返すようにしたいです。

クライアントにwsdlを返すために何ができるのですか?その後

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

+0

悪い時を経て、私はオンラインgSOAPユーザーガイドの解決策を見つけました:http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc19.10 – softghost

答えて

1

は、私は(I`mが私CMakeList.txtでこれをやって)私のWSDLのembbedのバージョンを生成し、それを、このコマンドラインでwsdl.hファイルを保存するためにXDツールを使用しました、私はそれが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を組み込むことができます。

関連する問題