您的位置:首页 > 编程语言 > Qt开发

QtSoap传递多种类型参数

2015-09-09 11:23 281 查看
在用QtSoap调用webservice时,经常需要传递Double、DateTime、Float等各种类型的参数,而QtSoapMessage的addMethodArgument接口只支持常见的bool、QString、int类型,在网上查资料发现一网友的解决办法:

在QtSoap.h里面添加了一个新的接口

QtSoapSimpleType(const QtSoapQName &name, Type type, QVariant variant);


QtSoap.cpp

QtSoapSimpleType::QtSoapSimpleType(const QtSoapQName &name, Type type, QVariant variant): QtSoapType(name, type), v(variant){
}


使用方法:

QtSoapMesssage request;
request.addMethodArgument(new QtSoapSimpleType(QtSoapQName("test"), QtSoapType::Double, QVariant(2015.9)));


这个接口支持所有QtSoapSimpleType支持的参数类型。

Constant	        Value	        Description
QtSoapType::AnyURI	14
QtSoapType::Array	41	        Represented by QtSoapArray
QtSoapType::Base64Binary	10
QtSoapType::Boolean	9
QtSoapType::Byte	34
QtSoapType::Date	3
QtSoapType::DateTime	1
QtSoapType::Decimal	27
QtSoapType::Double	13
QtSoapType::Duration	0
QtSoapType::ENTITY	26
QtSoapType::Float	12
QtSoapType::GDay	7
QtSoapType::GMonth	8
QtSoapType::GMonthDay	6
QtSoapType::GYear	5
QtSoapType::GYearMonth	4
QtSoapType::HexBinary	11
QtSoapType::ID	24
QtSoapType::IDREF	25
QtSoapType::Int	32
QtSoapType::Integer	28
QtSoapType::Language	20
QtSoapType::Long	31
QtSoapType::NCName	23
QtSoapType::NMTOKEN	22
QtSoapType::NOTATION	16
QtSoapType::Name	21
QtSoapType::NegativeInteger	30
QtSoapType::NonNegativeInteger	35
QtSoapType::NonPositiveInteger	29
QtSoapType::NormalizedString	18
QtSoapType::Other	43
QtSoapType::PositiveInteger	37
QtSoapType::QName	15
QtSoapType::Short	33
QtSoapType::String	17
QtSoapType::Struct	42	      Represented by QtSoapStruct
QtSoapType::Time	2
QtSoapType::Token	19
QtSoapType::UnsignedByte	40
QtSoapType::UnsignedInt	38
QtSoapType::UnsignedLong	36
QtSoapType::UnsignedShort	39


参考:http://supportforums.blackberry.com/t5/Native-Development/QtSoap-Changing-the-type-of-a-webservice-object/td-p/2308895
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息