Delphi SOAP response always NIL

I am trying to create a communication module to Cisco CCM using the .WSDL for risport.

I have converted the risport .WSDL into a risport.pas without any problems. The request are sent correct (see below) but the response are always NIL. When I see the response from the HTTPRIO component it seems okay.

What have I done wrong, since it do not convert the response correctly?

I have added:
SOAP request
SOAP response
delphi code that send the the SOAP request
risport.pas

SOAP request
 
  <?xml version="1.0" ?> 
- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
- <SOAP-ENV:Body xmlns:NS1="http://schemas.cisco.com/ast/soap/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
- <NS1:SelectCmDevice>
  <StateInfo xsi:type="xsd:string" /> 
  <CmSelectionCriteria href="#1" /> 
  </NS1:SelectCmDevice>
- <NS1:CmSelectionCriteria id="1" xsi:type="NS1:CmSelectionCriteria">
  <MaxReturnedDevices xsi:type="xsd:unsignedInt">1000</MaxReturnedDevices> 
  <Class xsi:type="xsd:string">Phone</Class> 
  <Model xsi:type="xsd:unsignedInt">255</Model> 
  <Status xsi:type="xsd:string">Registered</Status> 
  <NodeName xsi:type="xsd:string">10.1.1.51</NodeName> 
  <SelectBy xsi:type="xsd:string">Name</SelectBy> 
  <NS1:SelectItems href="#2" /> 
  </NS1:CmSelectionCriteria>
- <SOAP-ENC:Array id="2" xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="NS1:SelectItem[1]">
  <item href="#3" /> 
  </SOAP-ENC:Array>
- <NS1:SelectItem id="3" xsi:type="NS1:SelectItem">
  <Item xsi:type="xsd:string">SEP00169D597C50</Item> 
  </NS1:SelectItem>
  </SOAP-ENV:Body>
  </SOAP-ENV:Envelope>

Open in new window


SOAP response
  <?xml version="1.0" encoding="UTF-8" ?> 
- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <soapenv:Body>
- <ns1:SelectCmDeviceResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://schemas.cisco.com/ast/soap/">
- <SelectCmDeviceResult xsi:type="ns1:SelectCmDeviceResult">
  <TotalDevicesFound xsi:type="xsd:unsignedInt">1</TotalDevicesFound> 
- <CmNodes soapenc:arrayType="ns1:CmNode[1]" xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
- <item xsi:type="ns1:CmNode">
  <ReturnCode xsi:type="ns1:RisReturnCode">Ok</ReturnCode> 
  <Name xsi:type="xsd:string">10.1.1.51</Name> 
  <NoChange xsi:type="xsd:boolean">false</NoChange> 
- <CmDevices soapenc:arrayType="ns1:CmDevice[1]" xsi:type="soapenc:Array">
- <item xsi:type="ns1:CmDevice">
  <Name xsi:type="xsd:string">SEP00169D597C50</Name> 
  <IpAddress xsi:type="xsd:string">10.102.1.103</IpAddress> 
  <DirNumber xsi:type="xsd:string">1290-Registered</DirNumber> 
  <Class xsi:type="ns1:DeviceClass">Phone</Class> 
  <Model xsi:type="xsd:unsignedInt">115</Model> 
  <Product xsi:type="xsd:unsignedInt">115</Product> 
  <BoxProduct xsi:type="xsd:unsignedInt">0</BoxProduct> 
  <Httpd xsi:type="ns1:CmDevHttpd">Yes</Httpd> 
  <RegistrationAttempts xsi:type="xsd:unsignedInt">0</RegistrationAttempts> 
  <IsCtiControllable xsi:type="xsd:boolean">true</IsCtiControllable> 
  <LoginUserId xsi:type="xsd:string" xsi:nil="true" /> 
  <Status xsi:type="ns1:CmDevRegStat">Registered</Status> 
  <StatusReason xsi:type="xsd:unsignedInt">0</StatusReason> 
  <PerfMonObject xsi:type="xsd:unsignedInt">2</PerfMonObject> 
  <DChannel xsi:type="xsd:unsignedInt">0</DChannel> 
  <Description xsi:type="xsd:string">DK.AAL 1290 Brian Hansen</Description> 
- <H323Trunk xsi:type="ns1:H323Trunk">
  <ConfigName xsi:type="xsd:string" xsi:nil="true" /> 
  <TechPrefix xsi:type="xsd:string" xsi:nil="true" /> 
  <Zone xsi:type="xsd:string" xsi:nil="true" /> 
  <RemoteCmServer1 xsi:type="xsd:string" xsi:nil="true" /> 
  <RemoteCmServer2 xsi:type="xsd:string" xsi:nil="true" /> 
  <RemoteCmServer3 xsi:type="xsd:string" xsi:nil="true" /> 
  <AltGkList xsi:type="xsd:string" xsi:nil="true" /> 
  <ActiveGk xsi:type="xsd:string" xsi:nil="true" /> 
  <CallSignalAddr xsi:type="xsd:string" xsi:nil="true" /> 
  <RasAddr xsi:type="xsd:string" xsi:nil="true" /> 
  </H323Trunk>
  <TimeStamp xsi:type="xsd:unsignedInt">1300431320</TimeStamp> 
  </item>
  </CmDevices>
  </item>
  </CmNodes>
  </SelectCmDeviceResult>
  <StateInfo xsi:type="xsd:string"><StateInfo><Node Name="10.1.1.51" SubsystemStartTime="1296942905" StateId="20572" TotalItemsFound="1" TotalItemsReturned="1"/></StateInfo></StateInfo> 
  </ns1:SelectCmDeviceResponse>
  </soapenv:Body>
  </soapenv:Envelope>

Open in new window


DELPHI code
 stateinfo := '';
 cmselection := cmselectioncriteria.create;
 cmselection.MaxReturnedDevices := 1000;
 cmselection.NodeName := '10.1.1.51';
 cmselection.Model := 255;
 cmselection.Class_ := 'Phone';
 cmselection.Status := 'Registered';  //00169D597C50
 cmselection.SelectBy := 'Name';

 setlength(selitems, 1);
 selitems[0] := selectitem.create;
 selitems[0].item := 'SEP00169D597C50';
 cmselection.SelectItems := selitems;

 cmdeviceresult := y.SelectCmDevice(StateInfo, CmSelection);
 if cmdeviceresult = nil then

Open in new window


RISPORT.PAS
// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL     : https://10.1.1.51:8443/realtimeservice/services/RisPort?wsdl
//  >Import : https://10.1.1.51:8443/realtimeservice/services/RisPort?wsdl>0
// Encoding : UTF-8
// Version  : 1.0
// (01-04-2011 09:43:25 - - $Rev: 34800 $)
// ************************************************************************ //

unit RisPort;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;

const
  IS_OPTN = $0001;
  IS_UNBD = $0002;


type

  // ************************************************************************ //
  // The following types, referred to in the WSDL document are not being represented
  // in this file. They are either aliases[@] of other types represented or were referred
  // to but never[!] declared in the document. The types from the latter category
  // typically map to predefined/known XML or Embarcadero types; however, they could also 
  // indicate incorrect WSDL documents that failed to declare or import a schema type.
  // ************************************************************************ //
  // !:unsignedInt     - "http://www.w3.org/2001/XMLSchema"[Gbl]
  // !:string          - "http://www.w3.org/2001/XMLSchema"[Gbl]
  // !:boolean         - "http://www.w3.org/2001/XMLSchema"[Gbl]

  SelectCmDeviceResultSIP = class;              { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  SelectCmDeviceResult = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  SelectCtiItemResult  = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  ColumnType           = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CtiItem              = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CtiLine              = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  ServerInformation    = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  ColumnValueType      = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  SelectAppItem        = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  SelectDevName        = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  SelectDirNumber      = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  AstHeader            = class;                 { "http://schemas.cisco.com/ast/soap/"[Hdr][GblCplx] }
  SelectItem           = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CmSelectionCriteria  = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CmSelectionCriteriaSIP = class;               { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CtiSelectionCriteria = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  H323Trunk            = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CmDevice             = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CtiDevice            = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CmNode               = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CtiNode              = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CmNodeSIP            = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CmDeviceSIP          = class;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CmDevSingleLineStatus = class;                { "http://schemas.cisco.com/ast/soap/"[GblCplx] }

  {$SCOPEDENUMS ON}
  { "http://schemas.cisco.com/ast/soap/"[GblSmpl] }
  CtiSelectAppBy = (AppId, AppIpAddress, UserId);

  { "http://schemas.cisco.com/ast/soap/"[GblSmpl] }
  CtiStatus = (Any, Open, Closed, OpenFailed, Unknown);

  { "http://schemas.cisco.com/ast/soap/"[GblSmpl] }
  CtiMgrClass = (Provider, Device, Line);

  { "http://schemas.cisco.com/ast/soap/"[GblSmpl] }
  ProtocolType = (Any, SCCP, SIP, Unknown);

  { "http://schemas.cisco.com/ast/soap/"[GblSmpl] }
  DeviceClass = (Any, Phone, Gateway, H323, Cti, VoiceMail, MediaResources, Unknown, SIP_Trunk);

  { "http://schemas.cisco.com/ast/soap/"[GblSmpl] }
  CmDevHttpd = (Yes, No, Unknown);

  { "http://schemas.cisco.com/ast/soap/"[GblSmpl] }
  CmDevRegStat = (Any, Registered, UnRegistered, Rejected, PartiallyRegistered, Unknown);

  { "http://schemas.cisco.com/ast/soap/"[GblSmpl] }
  RisReturnCode = (Ok, NotFound, InvalidRequest, InternalError, NodeNotResponding, InvalidNodeName);

  { "http://schemas.cisco.com/ast/soap/"[GblSmpl] }
  CmSingleLineStatus = (Any, Registered, UnRegistered, Rejected, Unknown);

  {$SCOPEDENUMS OFF}

  CtiNodes   = array of CtiNode;                { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  SelectDirNumbers = array of SelectDirNumber;   { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  SelectDevNames = array of SelectDevName;      { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  SelectAppItems = array of SelectAppItem;      { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CtiItems   = array of CtiItem;                { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  ArrayOfServerInfo = array of ServerInformation;   { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  ArrayOfColumnValues = array of ColumnValueType;   { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  ArrayOfGetColumns = array of ColumnType;      { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CmNodes    = array of CmNode;                 { "http://schemas.cisco.com/ast/soap/"[GblCplx] }
  CmNodesSIP = array of CmNodeSIP;              { "http://schemas.cisco.com/ast/soap/"[GblCplx] }


  // ************************************************************************ //
  // XML       : SelectCmDeviceResultSIP, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  SelectCmDeviceResultSIP = class(TRemotable)
  private
    FTotalDevicesFound: Cardinal;
    FCmNodes: CmNodesSIP;
  public
    destructor Destroy; override;
  published
    property TotalDevicesFound: Cardinal    read FTotalDevicesFound write FTotalDevicesFound;
    property CmNodes:           CmNodesSIP  read FCmNodes write FCmNodes;
  end;



  // ************************************************************************ //
  // XML       : SelectCmDeviceResult, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  SelectCmDeviceResult = class(TRemotable)
  private
    FTotalDevicesFound: Cardinal;
    FCmNodes: CmNodes;
  public
    destructor Destroy; override;
  published
    property TotalDevicesFound: Cardinal  read FTotalDevicesFound write FTotalDevicesFound;
    property CmNodes:           CmNodes   read FCmNodes write FCmNodes;
  end;



  // ************************************************************************ //
  // XML       : SelectCtiItemResult, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  SelectCtiItemResult = class(TRemotable)
  private
    FTotalItemsFound: Cardinal;
    FCtiNodes: CtiNodes;
  public
    destructor Destroy; override;
  published
    property TotalItemsFound: Cardinal  read FTotalItemsFound write FTotalItemsFound;
    property CtiNodes:        CtiNodes  read FCtiNodes write FCtiNodes;
  end;



  // ************************************************************************ //
  // XML       : ColumnType, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  ColumnType = class(TRemotable)
  private
    FName_: string;
  published
    property Name_: string  read FName_ write FName_;
  end;



  // ************************************************************************ //
  // XML       : CtiItem, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  CtiItem = class(TRemotable)
  private
    FAppId: string;
    FUserId: string;
    FAppIpAddr: string;
    FAppStatus: CtiStatus;
    FAppStatusReason: Cardinal;
    FAppTimeStamp: Cardinal;
    FCtiDevice: CtiDevice;
    FCtiLine: CtiLine;
  public
    destructor Destroy; override;
  published
    property AppId:           string     read FAppId write FAppId;
    property UserId:          string     read FUserId write FUserId;
    property AppIpAddr:       string     read FAppIpAddr write FAppIpAddr;
    property AppStatus:       CtiStatus  read FAppStatus write FAppStatus;
    property AppStatusReason: Cardinal   read FAppStatusReason write FAppStatusReason;
    property AppTimeStamp:    Cardinal   read FAppTimeStamp write FAppTimeStamp;
    property CtiDevice:       CtiDevice  read FCtiDevice write FCtiDevice;
    property CtiLine:         CtiLine    read FCtiLine write FCtiLine;
  end;



  // ************************************************************************ //
  // XML       : CtiLine, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  CtiLine = class(TRemotable)
  private
    FDirNumber: string;
    FLineStatus: CtiStatus;
    FLineStatusReason: Cardinal;
    FLineTimeStamp: Cardinal;
  published
    property DirNumber:        string     read FDirNumber write FDirNumber;
    property LineStatus:       CtiStatus  read FLineStatus write FLineStatus;
    property LineStatusReason: Cardinal   read FLineStatusReason write FLineStatusReason;
    property LineTimeStamp:    Cardinal   read FLineTimeStamp write FLineTimeStamp;
  end;

  ArrayOfHosts = array of string;               { "http://schemas.cisco.com/ast/soap/"[GblCplx] }


  // ************************************************************************ //
  // XML       : ServerInformation, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  ServerInformation = class(TRemotable)
  private
    FHostName: string;
    Fos_name: string;
    Fos_version: string;
    Fos_arch: string;
    Fjava_runtime_version: string;
    Fjava_vm_vendor: string;
    Fcall_manager_version: string;
    FActive_Versions: string;
    FIn_Active_Versions: string;
  published
    property HostName:             string  read FHostName write FHostName;
    property os_name:              string  read Fos_name write Fos_name;
    property os_version:           string  read Fos_version write Fos_version;
    property os_arch:              string  read Fos_arch write Fos_arch;
    property java_runtime_version: string  read Fjava_runtime_version write Fjava_runtime_version;
    property java_vm_vendor:       string  read Fjava_vm_vendor write Fjava_vm_vendor;
    property call_manager_version: string  read Fcall_manager_version write Fcall_manager_version;
    property Active_Versions:      string  read FActive_Versions write FActive_Versions;
    property In_Active_Versions:   string  read FIn_Active_Versions write FIn_Active_Versions;
  end;

  ColumnNType     = string;         { "http://schemas.cisco.com/ast/soap/"[GblSmpl] }
  ColumnVType     = string;         { "http://schemas.cisco.com/ast/soap/"[GblSmpl] }


  // ************************************************************************ //
  // XML       : ColumnValueType, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  ColumnValueType = class(TRemotable)
  private
    FName_: ColumnNType;
    FValue: ColumnVType;
  published
    property Name_: ColumnNType  read FName_ write FName_;
    property Value: ColumnVType  read FValue write FValue;
  end;



  // ************************************************************************ //
  // XML       : SelectAppItem, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  SelectAppItem = class(TRemotable)
  private
    FAppItem: string;
  published
    property AppItem: string  read FAppItem write FAppItem;
  end;



  // ************************************************************************ //
  // XML       : SelectDevName, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  SelectDevName = class(TRemotable)
  private
    FDevName: string;
  published
    property DevName: string  read FDevName write FDevName;
  end;



  // ************************************************************************ //
  // XML       : SelectDirNumber, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  SelectDirNumber = class(TRemotable)
  private
    FDirNumber: string;
  published
    property DirNumber: string  read FDirNumber write FDirNumber;
  end;



  // ************************************************************************ //
  // XML       : AstHeader, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // Info      : Header
  // ************************************************************************ //
  AstHeader = class(TSOAPHeader)
  private
    FSessionId: string;
  published
    property SessionId: string  read FSessionId write FSessionId;
  end;



  // ************************************************************************ //
  // XML       : SelectItem, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  SelectItem = class(TRemotable)
  private
    FItem: string;
  published
    property Item: string  read FItem write FItem;
  end;

  SelectItems = array of SelectItem;            { "http://schemas.cisco.com/ast/soap/"[GblCplx] }


  // ************************************************************************ //
  // XML       : CmSelectionCriteria, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  CmSelectionCriteria = class(TRemotable)
  private
    FMaxReturnedDevices: Cardinal;
    FClass_: string;
    FModel: Cardinal;
    FStatus: string;
    FNodeName: string;
    FSelectBy: string;
    FSelectItems: SelectItems;
  public
    destructor Destroy; override;
  published
    property MaxReturnedDevices: Cardinal     read FMaxReturnedDevices write FMaxReturnedDevices;
    property Class_:             string       read FClass_ write FClass_;
    property Model:              Cardinal     read FModel write FModel;
    property Status:             string       read FStatus write FStatus;
    property NodeName:           string       read FNodeName write FNodeName;
    property SelectBy:           string       read FSelectBy write FSelectBy;
    property SelectItems:        SelectItems  read FSelectItems write FSelectItems;
  end;



  // ************************************************************************ //
  // XML       : CmSelectionCriteriaSIP, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  CmSelectionCriteriaSIP = class(TRemotable)
  private
    FMaxReturnedDevices: Cardinal;
    FClass_: string;
    FModel: Cardinal;
    FStatus: string;
    FNodeName: string;
    FSelectBy: string;
    FSelectItems: SelectItems;
    FProtocol: ProtocolType;
  public
    destructor Destroy; override;
  published
    property MaxReturnedDevices: Cardinal      read FMaxReturnedDevices write FMaxReturnedDevices;
    property Class_:             string        read FClass_ write FClass_;
    property Model:              Cardinal      read FModel write FModel;
    property Status:             string        read FStatus write FStatus;
    property NodeName:           string        read FNodeName write FNodeName;
    property SelectBy:           string        read FSelectBy write FSelectBy;
    property SelectItems:        SelectItems   read FSelectItems write FSelectItems;
    property Protocol:           ProtocolType  read FProtocol write FProtocol;
  end;



  // ************************************************************************ //
  // XML       : CtiSelectionCriteria, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  CtiSelectionCriteria = class(TRemotable)
  private
    FMaxReturnedItems: Cardinal;
    FCtiMgrClass: CtiMgrClass;
    FStatus: CtiStatus;
    FNodeName: string;
    FSelectAppBy: CtiSelectAppBy;
    FAppItems: SelectAppItems;
    FDevNames: SelectDevNames;
    FDirNumbers: SelectDirNumbers;
  public
    destructor Destroy; override;
  published
    property MaxReturnedItems: Cardinal          read FMaxReturnedItems write FMaxReturnedItems;
    property CtiMgrClass:      CtiMgrClass       read FCtiMgrClass write FCtiMgrClass;
    property Status:           CtiStatus         read FStatus write FStatus;
    property NodeName:         string            read FNodeName write FNodeName;
    property SelectAppBy:      CtiSelectAppBy    read FSelectAppBy write FSelectAppBy;
    property AppItems:         SelectAppItems    read FAppItems write FAppItems;
    property DevNames:         SelectDevNames    read FDevNames write FDevNames;
    property DirNumbers:       SelectDirNumbers  read FDirNumbers write FDirNumbers;
  end;



  // ************************************************************************ //
  // XML       : H323Trunk, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  H323Trunk = class(TRemotable)
  private
    FConfigName: string;
    FTechPrefix: string;
    FZone: string;
    FRemoteCmServer1: string;
    FRemoteCmServer2: string;
    FRemoteCmServer3: string;
    FAltGkList: string;
    FActiveGk: string;
    FCallSignalAddr: string;
    FRasAddr: string;
  published
    property ConfigName:      string  read FConfigName write FConfigName;
    property TechPrefix:      string  read FTechPrefix write FTechPrefix;
    property Zone:            string  read FZone write FZone;
    property RemoteCmServer1: string  read FRemoteCmServer1 write FRemoteCmServer1;
    property RemoteCmServer2: string  read FRemoteCmServer2 write FRemoteCmServer2;
    property RemoteCmServer3: string  read FRemoteCmServer3 write FRemoteCmServer3;
    property AltGkList:       string  read FAltGkList write FAltGkList;
    property ActiveGk:        string  read FActiveGk write FActiveGk;
    property CallSignalAddr:  string  read FCallSignalAddr write FCallSignalAddr;
    property RasAddr:         string  read FRasAddr write FRasAddr;
  end;

  CmDevices  = array of CmDevice;               { "http://schemas.cisco.com/ast/soap/"[GblCplx] }


  // ************************************************************************ //
  // XML       : CmDevice, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  CmDevice = class(TRemotable)
  private
    FName_: string;
    FIpAddress: string;
    FDirNumber: string;
    FClass_: DeviceClass;
    FModel: Cardinal;
    FProduct: Cardinal;
    FBoxProduct: Cardinal;
    FHttpd: CmDevHttpd;
    FRegistrationAttempts: Cardinal;
    FIsCtiControllable: Boolean;
    FLoginUserId: string;
    FStatus: CmDevRegStat;
    FStatusReason: Cardinal;
    FPerfMonObject: Cardinal;
    FDChannel: Cardinal;
    FDescription: string;
    FH323Trunk: H323Trunk;
    FTimeStamp: Cardinal;
  public
    destructor Destroy; override;
  published
    property Name_:                string        read FName_ write FName_;
    property IpAddress:            string        read FIpAddress write FIpAddress;
    property DirNumber:            string        read FDirNumber write FDirNumber;
    property Class_:               DeviceClass   read FClass_ write FClass_;
    property Model:                Cardinal      read FModel write FModel;
    property Product:              Cardinal      read FProduct write FProduct;
    property BoxProduct:           Cardinal      read FBoxProduct write FBoxProduct;
    property Httpd:                CmDevHttpd    read FHttpd write FHttpd;
    property RegistrationAttempts: Cardinal      read FRegistrationAttempts write FRegistrationAttempts;
    property IsCtiControllable:    Boolean       read FIsCtiControllable write FIsCtiControllable;
    property LoginUserId:          string        read FLoginUserId write FLoginUserId;
    property Status:               CmDevRegStat  read FStatus write FStatus;
    property StatusReason:         Cardinal      read FStatusReason write FStatusReason;
    property PerfMonObject:        Cardinal      read FPerfMonObject write FPerfMonObject;
    property DChannel:             Cardinal      read FDChannel write FDChannel;
    property Description:          string        read FDescription write FDescription;
    property H323Trunk:            H323Trunk     read FH323Trunk write FH323Trunk;
    property TimeStamp:            Cardinal      read FTimeStamp write FTimeStamp;
  end;



  // ************************************************************************ //
  // XML       : CtiDevice, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  CtiDevice = class(TRemotable)
  private
    FAppControlsMedia: Boolean;
    FDeviceName: string;
    FDeviceStatus: CtiStatus;
    FDeviceStatusReason: Cardinal;
    FDeviceTimeStamp: Cardinal;
  published
    property AppControlsMedia:   Boolean    read FAppControlsMedia write FAppControlsMedia;
    property DeviceName:         string     read FDeviceName write FDeviceName;
    property DeviceStatus:       CtiStatus  read FDeviceStatus write FDeviceStatus;
    property DeviceStatusReason: Cardinal   read FDeviceStatusReason write FDeviceStatusReason;
    property DeviceTimeStamp:    Cardinal   read FDeviceTimeStamp write FDeviceTimeStamp;
  end;



  // ************************************************************************ //
  // XML       : CmNode, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  CmNode = class(TRemotable)
  private
    FReturnCode: RisReturnCode;
    FName_: string;
    FNoChange: Boolean;
    FCmDevices: CmDevices;
  public
    destructor Destroy; override;
  published
    property ReturnCode: RisReturnCode  read FReturnCode write FReturnCode;
    property Name_:      string         read FName_ write FName_;
    property NoChange:   Boolean        read FNoChange write FNoChange;
    property CmDevices:  CmDevices      read FCmDevices write FCmDevices;
  end;



  // ************************************************************************ //
  // XML       : CtiNode, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  CtiNode = class(TRemotable)
  private
    FReturnCode: RisReturnCode;
    FName_: string;
    FNoChange: Boolean;
    FCtiItems: CtiItems;
  public
    destructor Destroy; override;
  published
    property ReturnCode: RisReturnCode  read FReturnCode write FReturnCode;
    property Name_:      string         read FName_ write FName_;
    property NoChange:   Boolean        read FNoChange write FNoChange;
    property CtiItems:   CtiItems       read FCtiItems write FCtiItems;
  end;

  CmDevicesSIP = array of CmDeviceSIP;          { "http://schemas.cisco.com/ast/soap/"[GblCplx] }


  // ************************************************************************ //
  // XML       : CmNodeSIP, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  CmNodeSIP = class(TRemotable)
  private
    FReturnCode: RisReturnCode;
    FName_: string;
    FNoChange: Boolean;
    FCmDevices: CmDevicesSIP;
  public
    destructor Destroy; override;
  published
    property ReturnCode: RisReturnCode  read FReturnCode write FReturnCode;
    property Name_:      string         read FName_ write FName_;
    property NoChange:   Boolean        read FNoChange write FNoChange;
    property CmDevices:  CmDevicesSIP   read FCmDevices write FCmDevices;
  end;

  CmDevLinesStatus = array of CmDevSingleLineStatus;   { "http://schemas.cisco.com/ast/soap/"[GblCplx] }


  // ************************************************************************ //
  // XML       : CmDeviceSIP, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  CmDeviceSIP = class(TRemotable)
  private
    FName_: string;
    FIpAddress: string;
    FDirNumber: string;
    FClass_: DeviceClass;
    FModel: Cardinal;
    FProduct: Cardinal;
    FBoxProduct: Cardinal;
    FHttpd: CmDevHttpd;
    FRegistrationAttempts: Cardinal;
    FIsCtiControllable: Boolean;
    FLoginUserId: string;
    FStatus: CmDevRegStat;
    FStatusReason: Cardinal;
    FPerfMonObject: Cardinal;
    FDChannel: Cardinal;
    FDescription: string;
    FH323Trunk: H323Trunk;
    FTimeStamp: Cardinal;
    FProtocol: ProtocolType;
    FNumOfLines: Cardinal;
    FLinesStatus: CmDevLinesStatus;
  public
    destructor Destroy; override;
  published
    property Name_:                string            read FName_ write FName_;
    property IpAddress:            string            read FIpAddress write FIpAddress;
    property DirNumber:            string            read FDirNumber write FDirNumber;
    property Class_:               DeviceClass       read FClass_ write FClass_;
    property Model:                Cardinal          read FModel write FModel;
    property Product:              Cardinal          read FProduct write FProduct;
    property BoxProduct:           Cardinal          read FBoxProduct write FBoxProduct;
    property Httpd:                CmDevHttpd        read FHttpd write FHttpd;
    property RegistrationAttempts: Cardinal          read FRegistrationAttempts write FRegistrationAttempts;
    property IsCtiControllable:    Boolean           read FIsCtiControllable write FIsCtiControllable;
    property LoginUserId:          string            read FLoginUserId write FLoginUserId;
    property Status:               CmDevRegStat      read FStatus write FStatus;
    property StatusReason:         Cardinal          read FStatusReason write FStatusReason;
    property PerfMonObject:        Cardinal          read FPerfMonObject write FPerfMonObject;
    property DChannel:             Cardinal          read FDChannel write FDChannel;
    property Description:          string            read FDescription write FDescription;
    property H323Trunk:            H323Trunk         read FH323Trunk write FH323Trunk;
    property TimeStamp:            Cardinal          read FTimeStamp write FTimeStamp;
    property Protocol:             ProtocolType      read FProtocol write FProtocol;
    property NumOfLines:           Cardinal          read FNumOfLines write FNumOfLines;
    property LinesStatus:          CmDevLinesStatus  read FLinesStatus write FLinesStatus;
  end;



  // ************************************************************************ //
  // XML       : CmDevSingleLineStatus, global, <complexType>
  // Namespace : http://schemas.cisco.com/ast/soap/
  // ************************************************************************ //
  CmDevSingleLineStatus = class(TRemotable)
  private
    FDirectoryNumber: string;
    FStatus: CmSingleLineStatus;
  published
    property DirectoryNumber: string              read FDirectoryNumber write FDirectoryNumber;
    property Status:          CmSingleLineStatus  read FStatus write FStatus;
  end;


  // ************************************************************************ //
  // Namespace : http://schemas.cisco.com/ast/soap/
  // soapAction: |http://schemas.cisco.com/ast/soap/action/#RisPort#SelectCmDevice|http://schemas.cisco.com/ast/soap/action/#RisPort#SelectCtiItem|http://schemas.cisco.com/ast/soap/action/#PerfmonPort#ExecuteCCMSQLStatement|http://schemas.cisco.com/ast/soap/action/#PerfmonPort#GetServerInfo|http://schemas.cisco.com/ast/soap/action/#RisPort#SelectCmDeviceSIP
  // transport : http://schemas.xmlsoap.org/soap/http
  // style     : rpc
  // use       : encoded
  // binding   : RisBinding
  // service   : RISService
  // port      : RisPort
  // URL       : https://10.1.1.51:8443/realtimeservice/services/RisPort
  // ************************************************************************ //
  RisPortType = interface(IInvokable)
  ['{31527E2B-2118-2941-3E45-F01514CA5BF4}']

    // Headers: AstHeader:pInOut
    function  SelectCmDevice(var StateInfo: string; const CmSelectionCriteria: CmSelectionCriteria): SelectCmDeviceResult; stdcall;

    // Headers: AstHeader:pInOut
    function  SelectCtiItem(var StateInfo: string; const CtiSelectionCriteria: CtiSelectionCriteria): SelectCtiItemResult; stdcall;

    // Headers: AstHeader:pInOut
    function  ExecuteCCMSQLStatement(const ExecuteSQLInputData: string; const GetColumns: ArrayOfGetColumns): ArrayOfColumnValues; stdcall;

    // Headers: AstHeader:pInOut
    function  GetServerInfo(const Hosts: ArrayOfHosts): ArrayOfServerInfo; stdcall;

    // Headers: AstHeader:pInOut
    function  SelectCmDeviceSIP(var StateInfo: string; const CmSelectionCriteriaSIP: CmSelectionCriteriaSIP): SelectCmDeviceResultSIP; stdcall;
  end;

function GetRisPortType(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): RisPortType;


implementation
  uses SysUtils;

function GetRisPortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): RisPortType;
const
  defWSDL = 'https://10.1.1.51:8443/realtimeservice/services/RisPort?wsdl';
  defURL  = 'https://10.1.1.51:8443/realtimeservice/services/RisPort';
  defSvc  = 'RISService';
  defPrt  = 'RisPort';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin
    if UseWSDL then
      Addr := defWSDL
    else
      Addr := defURL;
  end;
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;
  try
    Result := (RIO as RisPortType);
    if UseWSDL then
    begin
      RIO.WSDLLocation := Addr;
      RIO.Service := defSvc;
      RIO.Port := defPrt;
    end else
      RIO.URL := Addr;
  finally
    if (Result = nil) and (HTTPRIO = nil) then
      RIO.Free;
  end;
end;


destructor SelectCmDeviceResultSIP.Destroy;
var
  I: Integer;
begin
  for I := 0 to System.Length(FCmNodes)-1 do
    SysUtils.FreeAndNil(FCmNodes[I]);
  System.SetLength(FCmNodes, 0);
  inherited Destroy;
end;

destructor SelectCmDeviceResult.Destroy;
var
  I: Integer;
begin
  for I := 0 to System.Length(FCmNodes)-1 do
    SysUtils.FreeAndNil(FCmNodes[I]);
  System.SetLength(FCmNodes, 0);
  inherited Destroy;
end;

destructor SelectCtiItemResult.Destroy;
var
  I: Integer;
begin
  for I := 0 to System.Length(FCtiNodes)-1 do
    SysUtils.FreeAndNil(FCtiNodes[I]);
  System.SetLength(FCtiNodes, 0);
  inherited Destroy;
end;

destructor CtiItem.Destroy;
begin
  SysUtils.FreeAndNil(FCtiDevice);
  SysUtils.FreeAndNil(FCtiLine);
  inherited Destroy;
end;

destructor CmSelectionCriteria.Destroy;
var
  I: Integer;
begin
  for I := 0 to System.Length(FSelectItems)-1 do
    SysUtils.FreeAndNil(FSelectItems[I]);
  System.SetLength(FSelectItems, 0);
  inherited Destroy;
end;

destructor CmSelectionCriteriaSIP.Destroy;
var
  I: Integer;
begin
  for I := 0 to System.Length(FSelectItems)-1 do
    SysUtils.FreeAndNil(FSelectItems[I]);
  System.SetLength(FSelectItems, 0);
  inherited Destroy;
end;

destructor CtiSelectionCriteria.Destroy;
var
  I: Integer;
begin
  for I := 0 to System.Length(FAppItems)-1 do
    SysUtils.FreeAndNil(FAppItems[I]);
  System.SetLength(FAppItems, 0);
  for I := 0 to System.Length(FDevNames)-1 do
    SysUtils.FreeAndNil(FDevNames[I]);
  System.SetLength(FDevNames, 0);
  for I := 0 to System.Length(FDirNumbers)-1 do
    SysUtils.FreeAndNil(FDirNumbers[I]);
  System.SetLength(FDirNumbers, 0);
  inherited Destroy;
end;

destructor CmDevice.Destroy;
begin
  SysUtils.FreeAndNil(FH323Trunk);
  inherited Destroy;
end;

destructor CmNode.Destroy;
var
  I: Integer;
begin
  for I := 0 to System.Length(FCmDevices)-1 do
    SysUtils.FreeAndNil(FCmDevices[I]);
  System.SetLength(FCmDevices, 0);
  inherited Destroy;
end;

destructor CtiNode.Destroy;
var
  I: Integer;
begin
  for I := 0 to System.Length(FCtiItems)-1 do
    SysUtils.FreeAndNil(FCtiItems[I]);
  System.SetLength(FCtiItems, 0);
  inherited Destroy;
end;

destructor CmNodeSIP.Destroy;
var
  I: Integer;
begin
  for I := 0 to System.Length(FCmDevices)-1 do
    SysUtils.FreeAndNil(FCmDevices[I]);
  System.SetLength(FCmDevices, 0);
  inherited Destroy;
end;

destructor CmDeviceSIP.Destroy;
var
  I: Integer;
begin
  for I := 0 to System.Length(FLinesStatus)-1 do
    SysUtils.FreeAndNil(FLinesStatus[I]);
  System.SetLength(FLinesStatus, 0);
  SysUtils.FreeAndNil(FH323Trunk);
  inherited Destroy;
end;

initialization
  { RisPortType }
  InvRegistry.RegisterInterface(TypeInfo(RisPortType), 'http://schemas.cisco.com/ast/soap/', 'UTF-8');
  InvRegistry.RegisterAllSOAPActions(TypeInfo(RisPortType), '|http://schemas.cisco.com/ast/soap/action/#RisPort#SelectCmDevice'
                                                           +'|http://schemas.cisco.com/ast/soap/action/#RisPort#SelectCtiItem'
                                                           +'|http://schemas.cisco.com/ast/soap/action/#PerfmonPort#ExecuteCCMSQLStatement'
                                                           +'|http://schemas.cisco.com/ast/soap/action/#PerfmonPort#GetServerInfo'
                                                           +'|http://schemas.cisco.com/ast/soap/action/#RisPort#SelectCmDeviceSIP'
                                                           );
  InvRegistry.RegisterHeaderClass(TypeInfo(RisPortType), AstHeader, 'AstHeader', 'http://schemas.cisco.com/ast/soap/');
  { RisPortType.GetServerInfo }
  InvRegistry.RegisterParamInfo(TypeInfo(RisPortType), 'GetServerInfo', 'Hosts', '',
                                '[ArrayItemName="item"]');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CtiNodes), 'http://schemas.cisco.com/ast/soap/', 'CtiNodes');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CtiSelectAppBy), 'http://schemas.cisco.com/ast/soap/', 'CtiSelectAppBy');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CtiStatus), 'http://schemas.cisco.com/ast/soap/', 'CtiStatus');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CtiMgrClass), 'http://schemas.cisco.com/ast/soap/', 'CtiMgrClass');
  RemClassRegistry.RegisterXSInfo(TypeInfo(SelectDirNumbers), 'http://schemas.cisco.com/ast/soap/', 'SelectDirNumbers');
  RemClassRegistry.RegisterXSInfo(TypeInfo(SelectDevNames), 'http://schemas.cisco.com/ast/soap/', 'SelectDevNames');
  RemClassRegistry.RegisterXSInfo(TypeInfo(SelectAppItems), 'http://schemas.cisco.com/ast/soap/', 'SelectAppItems');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CtiItems), 'http://schemas.cisco.com/ast/soap/', 'CtiItems');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfServerInfo), 'http://schemas.cisco.com/ast/soap/', 'ArrayOfServerInfo');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfColumnValues), 'http://schemas.cisco.com/ast/soap/', 'ArrayOfColumnValues');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfGetColumns), 'http://schemas.cisco.com/ast/soap/', 'ArrayOfGetColumns');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CmNodes), 'http://schemas.cisco.com/ast/soap/', 'CmNodes');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ProtocolType), 'http://schemas.cisco.com/ast/soap/', 'ProtocolType');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CmNodesSIP), 'http://schemas.cisco.com/ast/soap/', 'CmNodesSIP');
  RemClassRegistry.RegisterXSClass(SelectCmDeviceResultSIP, 'http://schemas.cisco.com/ast/soap/', 'SelectCmDeviceResultSIP');
  RemClassRegistry.RegisterXSClass(SelectCmDeviceResult, 'http://schemas.cisco.com/ast/soap/', 'SelectCmDeviceResult');
  RemClassRegistry.RegisterXSClass(SelectCtiItemResult, 'http://schemas.cisco.com/ast/soap/', 'SelectCtiItemResult');
  RemClassRegistry.RegisterXSClass(ColumnType, 'http://schemas.cisco.com/ast/soap/', 'ColumnType');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(ColumnType), 'Name_', '[ExtName="Name"]');
  RemClassRegistry.RegisterXSClass(CtiItem, 'http://schemas.cisco.com/ast/soap/', 'CtiItem');
  RemClassRegistry.RegisterXSClass(CtiLine, 'http://schemas.cisco.com/ast/soap/', 'CtiLine');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfHosts), 'http://schemas.cisco.com/ast/soap/', 'ArrayOfHosts');
  RemClassRegistry.RegisterXSClass(ServerInformation, 'http://schemas.cisco.com/ast/soap/', 'ServerInformation');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(ServerInformation), 'os_name', '[ExtName="os-name"]');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(ServerInformation), 'os_version', '[ExtName="os-version"]');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(ServerInformation), 'os_arch', '[ExtName="os-arch"]');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(ServerInformation), 'java_runtime_version', '[ExtName="java-runtime-version"]');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(ServerInformation), 'java_vm_vendor', '[ExtName="java-vm-vendor"]');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(ServerInformation), 'call_manager_version', '[ExtName="call-manager-version"]');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ColumnNType), 'http://schemas.cisco.com/ast/soap/', 'ColumnNType');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ColumnVType), 'http://schemas.cisco.com/ast/soap/', 'ColumnVType');
  RemClassRegistry.RegisterXSClass(ColumnValueType, 'http://schemas.cisco.com/ast/soap/', 'ColumnValueType');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(ColumnValueType), 'Name_', '[ExtName="Name"]');
  RemClassRegistry.RegisterXSClass(SelectAppItem, 'http://schemas.cisco.com/ast/soap/', 'SelectAppItem');
  RemClassRegistry.RegisterXSClass(SelectDevName, 'http://schemas.cisco.com/ast/soap/', 'SelectDevName');
  RemClassRegistry.RegisterXSClass(SelectDirNumber, 'http://schemas.cisco.com/ast/soap/', 'SelectDirNumber');
  RemClassRegistry.RegisterXSClass(AstHeader, 'http://schemas.cisco.com/ast/soap/', 'AstHeader');
  RemClassRegistry.RegisterXSClass(SelectItem, 'http://schemas.cisco.com/ast/soap/', 'SelectItem');
  RemClassRegistry.RegisterXSInfo(TypeInfo(SelectItems), 'http://schemas.cisco.com/ast/soap/', 'SelectItems');
  RemClassRegistry.RegisterXSClass(CmSelectionCriteria, 'http://schemas.cisco.com/ast/soap/', 'CmSelectionCriteria');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(CmSelectionCriteria), 'Class_', '[ExtName="Class"]');
  RemClassRegistry.RegisterXSClass(CmSelectionCriteriaSIP, 'http://schemas.cisco.com/ast/soap/', 'CmSelectionCriteriaSIP');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(CmSelectionCriteriaSIP), 'Class_', '[ExtName="Class"]');
  RemClassRegistry.RegisterXSInfo(TypeInfo(DeviceClass), 'http://schemas.cisco.com/ast/soap/', 'DeviceClass');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(DeviceClass), 'SIP_Trunk', 'SIP Trunk');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CmDevHttpd), 'http://schemas.cisco.com/ast/soap/', 'CmDevHttpd');
  RemClassRegistry.RegisterXSClass(CtiSelectionCriteria, 'http://schemas.cisco.com/ast/soap/', 'CtiSelectionCriteria');
  RemClassRegistry.RegisterXSClass(H323Trunk, 'http://schemas.cisco.com/ast/soap/', 'H323Trunk');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CmDevRegStat), 'http://schemas.cisco.com/ast/soap/', 'CmDevRegStat');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CmDevices), 'http://schemas.cisco.com/ast/soap/', 'CmDevices');
  RemClassRegistry.RegisterXSClass(CmDevice, 'http://schemas.cisco.com/ast/soap/', 'CmDevice');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(CmDevice), 'Name_', '[ExtName="Name"]');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(CmDevice), 'Class_', '[ExtName="Class"]');
  RemClassRegistry.RegisterXSClass(CtiDevice, 'http://schemas.cisco.com/ast/soap/', 'CtiDevice');
  RemClassRegistry.RegisterXSInfo(TypeInfo(RisReturnCode), 'http://schemas.cisco.com/ast/soap/', 'RisReturnCode');
  RemClassRegistry.RegisterXSClass(CmNode, 'http://schemas.cisco.com/ast/soap/', 'CmNode');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(CmNode), 'Name_', '[ExtName="Name"]');
  RemClassRegistry.RegisterXSClass(CtiNode, 'http://schemas.cisco.com/ast/soap/', 'CtiNode');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(CtiNode), 'Name_', '[ExtName="Name"]');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CmDevicesSIP), 'http://schemas.cisco.com/ast/soap/', 'CmDevicesSIP');
  RemClassRegistry.RegisterXSClass(CmNodeSIP, 'http://schemas.cisco.com/ast/soap/', 'CmNodeSIP');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(CmNodeSIP), 'Name_', '[ExtName="Name"]');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CmDevLinesStatus), 'http://schemas.cisco.com/ast/soap/', 'CmDevLinesStatus');
  RemClassRegistry.RegisterXSClass(CmDeviceSIP, 'http://schemas.cisco.com/ast/soap/', 'CmDeviceSIP');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(CmDeviceSIP), 'Name_', '[ExtName="Name"]');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(CmDeviceSIP), 'Class_', '[ExtName="Class"]');
  RemClassRegistry.RegisterXSInfo(TypeInfo(CmSingleLineStatus), 'http://schemas.cisco.com/ast/soap/', 'CmSingleLineStatus');
  RemClassRegistry.RegisterXSClass(CmDevSingleLineStatus, 'http://schemas.cisco.com/ast/soap/', 'CmDevSingleLineStatus');

end.

Open in new window

KeHoAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

samenglishCommented:
Which version of Delphi are you using? I notice you're not using BasicHttpBinding (I hope you're using a recent version of Delphi)... I also notice that you're using complex types (I hope you're using a recent version of Delphi)...

Have you tried consuming the same service from a .Net client? You may have to end up writing a .Net intermediary service to supply BasicHttpBinding endpoints to your Delphi clients.
KeHoAuthor Commented:
Running Delphi XE. Have not tried a .Net client (have not yet tried .net).

BR. Brian
samenglishCommented:
Can you please show how you've defined and assigned any value to "y"?

I think your code should include ...

uses
  RisPort;

var
  y: RisPortType;
  cmdeviceresult: SelectCmDeviceResult;
  StateInfo: string;
  CmSelection: CmSelectionCriteria;

begin

  y := nil;
  y := RisPort.GetRisPortType;
  ...
  // create and populate StateInfo and CmSelection
  ...
  try  
    cmdeviceresult := y.SelectCmDevice(StateInfo, CmSelection);
  except
    on E: Exception do
      ShowMessage('Exception' + #13#10 + 'Class: ' + E.ClassName + '; Message: ' + E.Message);
  end;

end;

You should step through your code and confirm that "y" is not nil *before* you try to use SelectCmDevice.

Let me know how you go.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Starting with Angular 5

Learn the essential features and functions of the popular JavaScript framework for building mobile, desktop and web applications.

bakry99Commented:
listening..
mlmccCommented:
I've requested that this question be deleted for the following reason:

This question has been classified as abandoned and is closed as part of the Cleanup Program. See the recommendation for more details.
samenglishCommented:
If nobody minds, I'd like the points, but I'm not bothered either way.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Delphi

From novice to tech pro — start learning today.