VC6.0用soap调用web service接口传复合参数问题(即传一个结构体)

zqxml123 2013-01-10 09:46:43
//下面包函服务器结构体的定义
<?xml version="1.0" ?><wsdl:definitions name="TrafficPoliceVehicleSoapServiceImplService" targetNamespace="http://service.trafficpolice.webservice.lytx.com/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://service.trafficpolice.webservice.lytx.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://service.trafficpolice.webservice.lytx.com/" xmlns="http://service.trafficpolice.webservice.lytx.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="vehiclePassRec">
<xs:sequence>
<xs:element minOccurs="0" name="fdId" type="xs:string"></xs:element>
<xs:element name="channelId" type="xs:int"></xs:element>
<xs:element minOccurs="0" name="deviceType" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="directionId" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="driveWay" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="license" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="licenseType" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="passDateTime" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="redLightBeginTime" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="redLightLast" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="speed" type="xs:long"></xs:element>
<xs:element minOccurs="0" name="limitSpeed" type="xs:long"></xs:element>
<xs:element minOccurs="0" name="violationType" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="ViolationType2" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="carLength" type="xs:long"></xs:element>
<xs:element minOccurs="0" name="licenseColor" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="carType" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="picGuid1" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="picGuid2" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="picGuid3" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="picGuid4" type="xs:string"></xs:element>
<xs:element minOccurs="0" name="violate" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>




//下面是调用函传结构体参数函数的定义
<xs:element name="sendPassrec" type="sendPassrec"></xs:element>
<xs:complexType name="sendPassrec">
<xs:sequence>
<xs:element minOccurs="0" name="arg0" type="vehiclePassRec"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="sendPassrecResponse" type="sendPassrecResponse"></xs:element>
<xs:complexType name="sendPassrecResponse">
<xs:sequence>
<xs:element name="return" type="xs:int"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>

我在网上看到V6.0调用函数的很多,可是传结构体的例子没有见过,哪位大侠帮帮忙!!
HRESULT hr;

BOOL rb;
ISoapSerializerPtr Serializer;
ISoapReaderPtr Reader;
ISoapConnectorPtr Connector;

hr=Connector.CreateInstance(__uuidof(HttpConnector30));
if (FAILED(hr))
{
ShowStatus("创建COM对像错误!",ZF_LOG_ERROR);
rb=FALSE;
}
else
{
ShowStatus("创建COM对像成功!",ZF_LOG_STATUS);
rb=TRUE;
}
// ShowStatus("创建HttpConnector30实例错误!",ZF_LOG_ERROR);
Connector->Property["EndPointURL"] = "http://172.16.1.150:9000/soa/services/trafficPoliceVehicleService?wsdl";
hr=Connector->Connect();
if (FAILED(hr))
{
ShowStatus("创建HttpConnector30实例错误!",ZF_LOG_ERROR);
rb=FALSE;
}
else
{
ShowStatus("创建HttpConnector30实例成功!",ZF_LOG_STATUS);
rb=TRUE;
}
Connector->Property["SoapAction"] ="http://service.trafficpolice.webservice.lytx.com/";
Connector->BeginMessage();
hr=Serializer.CreateInstance(__uuidof(SoapSerializer30));
if (FAILED(hr))
{
ShowStatus("创建SoapSerializer实例错误!",ZF_LOG_ERROR);
rb=FALSE;
}
else
{
ShowStatus("创建SoapSerializer实例成功!",ZF_LOG_STATUS);
rb=TRUE;
}

我现在就是想知道怎么调用

int ret = sendPassrec(VehiclePassRec rec)
这个函数,
...全文
281 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Passage2011 2013-01-11
  • 打赏
  • 举报
回复
引用 2 楼 zqxml123 的回复:
你好,请问在element中<xs:element name="channelId" type="xs:int"></xs:element>是int型也用type="xs:string" 吗?
当然根据type啊,int 就用int string就用CString
zqxml123 2013-01-11
  • 打赏
  • 举报
回复
你好,请问在element中<xs:element name="channelId" type="xs:int"></xs:element>是int型也用type="xs:string" 吗?
Passage2011 2013-01-10
  • 打赏
  • 举报
回复
不用管WebService中函数是什么,WSDL中有多少element就传多少参数,参数类型:type="xs:string"

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧