在用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