gSoap指定输入参数使用类化合物数据类型

时间:2015-03-26 14:07:21

标签: c++ soap gsoap

我试图创建一个将类作为其参数之一的方法。当我从客户端发送到服务器时,我发现对象发送始终为空 这是我用来生成服务器和客户端的.h文件

class FamilleProduit
{
private:
    int Id;
    std::string Libelle;
public:
    FamilleProduit();
    ~FamilleProduit();
    int getId();
    void setId(int value);
    std::string getLibelle();
    void setLibelle(std::string value);
};


int ns__ajouterByType ( FamilleProduit familleproduit, bool* result);
int ns__ajouterByLibelle ( std::string libelle, bool* result);

这是客户端

.......
struct soap m;
FamilleProduit f;
f.setLibelle("byTypeLocal");
soap_init(&m);
soap_call_ns__ajouterByType(&m,server,"",f,&res);
.........

这是服务器部分

int ns__ajouterByType(struct soap* soap, FamilleProduit f, bool *result){
    cout<<"Ajout FamilleProduit "<<f.getLibelle()<<endl;

    return SOAP_OK;
}

我发现对象FamilleProduit总是空的

  

有关信息,我使用相同的代码发送字符串,但我没有   问题

PLZ帮助,谢谢大家

1 个答案:

答案 0 :(得分:0)

我发现了问题,它出现在class FamilleProduit的声明中我必须公开属性。我不知道为什么!但它的确有效。 新的.h文件

// Content of file "Test.h": 
//gsoap ns service name: Test 
//gsoap ns service protocol: SOAP 
//gsoap ns service style: rpc 
//gsoap ns service encoding: encoded 
//gsoap ns schema namespace: urn:MutexColisage

class ns1__FamilleProduit
{
    int Id;
    std::string Libelle;
    ns1__FamilleProduit();
    ~ns1__FamilleProduit();
    int getId();
    void setId(int value);
    std::string getLibelle();
    void setLibelle(std::string value);
};


int ns__ajouterByType ( ns1__FamilleProduit *familleproduit, bool* result);
int ns__ajouterByLibelle ( std::string libelle, bool* result);