Qtsoap请求不传递参数

时间:2011-09-15 12:16:57

标签: qt soap arguments

我正在努力让肥皂在qt中运作 我发现:qtsoap-2.7_1-opensource

我的请求代码:

void DataConnector::checkLogin(QString username, QString password){
    QtSoapMessage request;
    request.setMethod(QtSoapQName("checkLogin","http://service/"));
    request.addMethodArgument("username","",username);
    request.addMethodArgument("password","",password);
    http->setAction("");
    http->submitRequest(request, QString("/datacheckService"));
}

请求soap消息如下所示:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
    <SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
        <checkLogin xmlns="http://service/">
            <username xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">4444</username>
            <password xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">4444</password>
        </checkLogin>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

服务器未检测到用户名和密码标记,因为它们的命名空间错误。

问题是用户名和密码应该获得一个属性:xmlns:=“”,而不是没有命名空间。因为没有名称空间意味着他们接管其父级的名称空间

我的请求应如下所示:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
    <SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
        <checkLogin xmlns="http://service/">
            <username xmlns="" xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">4444</username>
            <password xmlns="" xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">4444</password>
        </checkLogin>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

关于如何使用qtsoap代码实现此目的的任何想法?

1 个答案:

答案 0 :(得分:0)

问题出在QtSoap代码

只搜索xmlns =“”应该添加到qtsoap源代码中的soap消息的位置 并编辑if构造,以便在字符串为“”

时也添加它

为我解决了问题

如果您想要来源:给我留言,我会发送