我正在努力让肥皂在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代码实现此目的的任何想法?
答案 0 :(得分:0)
问题出在QtSoap代码
中只搜索xmlns =“”应该添加到qtsoap源代码中的soap消息的位置 并编辑if构造,以便在字符串为“”
时也添加它为我解决了问题
如果您想要来源:给我留言,我会发送