QtSoapType下面有三种分类:QtSoapArray、QtSoapSimpleType、QtSoapStruct
当WebServive接口中出现类似情况时:
<s:element name="TestComplexPara">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="para" type="tns:projPara"/>
<s:element minOccurs="0" maxOccurs="1" name="tokenCode" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="projPara">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="planSn" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="actualLoads" type="s:double"/>
</s:sequence>
</s:complexType>
这里的参数para,在webservice 服务器端是这样定义的:
[WebMethod]
public bool TestComplexPara(projPara para)
{
return true;
}
public class projPara
{
public string planSn;
public double actualLoads;
}
这种情况下,QtSoap怎样传递这个参数呢,我是这样处理的:
QtSoapMessage request;
QtSoapStruct *paraStruct = new QtSoapStruct(QtSoapQName("para"));
paraStruct->insert(new QtSoapSimpleType(QtSoapQName("planSn"), "test1"));
paraStruct->insert(new QtSoapSimpleType(QtSoapQName("actualLoads"), QtSoapType::Double, QVariant(2015.9)));
request.addMethodArgument(paraStruct);
关于QtSoapSimpleType怎样传递Double类型参数,请参考:QtSoap传递多种类型参数