1

我正在使用 gsoap 创建我的第一个 Web 服务客户端。我能够运行 gsoap 提供的 calc 示例。

现在我正在尝试从 WCF Webservice 访问 String GetData() 函数。我执行了 wsdl2h 和 soapcpp2 步骤并生成了 .h 文件。在 xxxxproxy.h 我看到 GetData 的原型如下

/// Web service operation 'GetData' (returns error code or SOAP_OK)
    virtual int GetData(_ns1__GetData *ns1__GetData, _ns1__GetDataResponse *ns1__GetDataResponse);

Can someone tell me what should I write in my main.cpp to access GetData. I have following code in main.cpp

#include <QtCore/QCoreApplication>
#include "soapWSHttpBinding_USCOREIAquaLinkProxy.h"
#include "WSHttpBinding_USCOREIAquaLink.nsmap"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    WSHttpBinding_USCOREIAquaLinkProxy webService;
    std::cout <<"Sent request"<<std::endl;
    std::string result;
    if(webService.GetData(?????? )==SOAP_OK)
    {
        std::cout << "Returned "<< ????? <<std::endl;
    }
    else
    {
        webService.soap_stream_fault(std::cerr);
    }
    return a.exec();
}

谢谢。

4

1 回答 1

4

_ns1__GetData函数中的第一个参数GetData是请求参数,第二个是响应参数。您应该尝试以下操作:

_ns1__GetData request;
request.???? = ???? // I don't know the WCF Webservice
_ns1__GetDataResponse response;
if(webService.GetData(&request, &response) == SOAP_OK)
{
    std::cout << "Returned " << response.????;
}

我不知道 WCF Web 服务。但我猜你必须用一些值填充请求实例。让我想知道的是,类名_ns1__GetData_ns1__GetDataResponse以下划线开头。我使用 gSoap 很长时间了,名字总是没有开始下划线。

于 2011-04-05T20:12:58.130 回答