一、WSDL描述
<xsd:complexType name="DispMember">
<xsd:sequence>
<xsd:element minOccurs="1" name="id" nillable="false" type="int"/>
<xsd:element minOccurs="1" name="groupId" nillable="false" type="int"/>
<xsd:element minOccurs="1" name="centerId" nillable="false" type="int"/>
<xsd:element minOccurs="1" name="orgMemberId" nillable="false" type="int"/>
<xsd:element minOccurs="1" name="orderno" nillable="false" type="int"/>
<xsd:element minOccurs="1" name="isurgent" nillable="false" type="int"/>
<xsd:element minOccurs="0" name="remark" nillable="false" type="string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="DispMemberReq">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" name="dispMember" nillable="false" type="tns:DispMember" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<wsdl:message name="DispMemberRequest">
<wsdl:part element="tns:DispMemberReq" name="parameters" />
</wsdl:message>
<wsdl:operation name="DispMemberAdd">
<wsdl:input message="tns:DispMemberRequest" />
<wsdl:output message="tns:DispMemberResponse" />
</wsdl:operation>
添加用户时,需要传递个“DIspMember”对象。
二、FLEX客户端实现
最容易的解决方案是使用Flash Builder调用wsdl生成客户端代码,然后使用生成的代码实现。但是这种方法会产生大量的类。
private function addMember(): void {
var scws:ScService = new ScService();
scws.wsdl = "http://192.168.2.172:8080/axis2/services/ScService?wsdl";
var member:DispMember = new DispMember();
member.id = 0;
member.groupId = 1;
member.centerId = 1;
member.isurgent = 0;
member.orderno = 0;
member.remark = "";
var req:DispMemberReq = new DispMemberReq();
req.dispMember = member;
var st:AsyncToken = scws.DispMemberAdd(req);
st.addResponder(new AsyncResponder(onResult, faultHandler, st));
scws.addEventListener(ResultEvent.RESULT, onResult);
}
private function onResult(event:ResultEvent, token:AsyncToken):void {
Alert.show("Msg", event.result.memberId);
textArea.text = event.result.memberId + "," + event.result.returnCode;
event.preventDefault();
}
private function faultHandler(event:FaultEvent, token:AsyncToken):void {
trace(event.fault.faultString);
}
其中DispMember、DispMemberReq、ScService都是生成的类。
三、解决方案二
使用mx.rpc.soap.WebService类来调用方法,传入参数。
ws = new WebService();
ws.wsdl = "http://192.168.2.172:8080/axis2/services/ScService?wsdl";
ws.loadWSDL();
ws.addEventListener(FaultEvent.FAULT, faultHandler);
ws.addHeader(new AuthHeader("admin", "1"));
var dispMember:Object = new Object();
dispMember.id = 0;
dispMember.groupId = groupId;
dispMember.centerId = 1;
dispMember.orgMemberId = employee.id;
dispMember.orderno = 1;
dispMember.isurgent = 0;
dispMember.remark = "";
var object:Object = new Object();
object.dispMember = dispMember;
ws.getOperation("DispMemberAdd").send(object)