//下面包函服务器结构体的定义
<?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;
}soapwebservice

解决方案 »

  1.   

    我现在就是想知道怎么调用int ret = sendPassrec(VehiclePassRec rec) 
    这个函数,
      

  2.   

    能不能来个高手回答一下,给个思路也好呀,我好结贴!!!
    我想的是,我在工程中定义一个结构体,这个结构体跟服务器变量一样.我再把结构体考贝到内存里,当string
    传给服务器.
    设buff就是考贝了结构体的内存
    Serializer->StartElement("sendPassrec","http://service.trafficpolice.webservice.lytx.com/","tns","");
    Serializer->StartElement("VehiclePassRec","http://service.trafficpolice.webservice.lytx.com/","xs:string","");
    Serializer->WriteString((_bstr_t)buff);
    Serializer->EndElement();
    这样行吗?
      

  3.   


    错了
    Serializer->StartElement("sendPassrec","http://service.trafficpolice.webservice.lytx.com/","tns","");
     Serializer->StartElement("arg0","http://service.trafficpolice.webservice.lytx.com/","xs:vehiclePassRec","");
     Serializer->WriteString((_bstr_t)buff);
     Serializer->EndElement();