Error when call Alarm Command SOAP web service->GetAlarmLines

I try to integrate with VMS 2020R2 with SOAP protocol integration.

First,I call login API to get a token with basichttpbinding. and then call ​Alarm Command SOAP web service->GetAlarmLines with below request:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cen="http://videoos.net/2/CentralServerAlarmCommand" xmlns:vid="http://schemas.datacontract.org/2004/07/VideoOS.Platform.Proxy.Alarm">

soapenv:Header/

soapenv:Body

cen:GetAlarmLines

 _<!--Optional:-->_

 _<cen:token>TOKEN#c1e17467-d500-4b1f-9681-f151f95f1e5c#vms2018server//ServerConnector#</cen:token>_

 _<!--Optional:-->_

 _<cen:from>1626919200</cen:from>_

 _<!--Optional:-->_

 _<cen:maxCount>10</cen:maxCount>_

 _<!--Optional:-->_

 _<cen:filter>_

  _<!--Optional:-->_

  _<vid:Conditions>_

    _<!--Zero or more repetitions:-->_

    _<vid:Condition>_

     _<!--Optional:-->_

     _<vid:Operator>LessThan</vid:Operator>_

     _<!--Optional:-->_

     _<vid:Target>Priority</vid:Target>_

     _<!--Optional:-->_

     _<vid:Value>High</vid:Value>_

    _</vid:Condition>_

  _</vid:Conditions>_

  _<!--Optional:-->_

  _<vid:Orders>_

    _<!--Zero or more repetitions:-->_

    _<vid:OrderBy>_

     _<!--Optional:-->_

     _<vid:Order>Descending</vid:Order>_

     _<!--Optional:-->_

     _<vid:Target>Timestamp</vid:Target>_

    _</vid:OrderBy>_

  _</vid:Orders>_

 _</cen:filter>_

</cen:GetAlarmLines>

</soapenv:Body>

</soapenv:Envelope>

I get error response from VMS server as below:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

<s:Body>

<s:Fault>

 _<faultcode xmlns:a="_[_http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher_](http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher "http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher")_">a:DeserializationFailed</faultcode>_

 _<faultstring xml:lang="en-US">The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter_ [_http://videoos.net/2/CentralServerAlarmCommand:filter_](http://videoos.net/2/CentralServerAlarmCommand:filter "http://videoos.net/2/CentralServerAlarmCommand:filter")_. The InnerException message was 'Element Value from namespace_ [_http://schemas.datacontract.org/2004/07/VideoOS.Platform.Proxy.Alarm_](http://schemas.datacontract.org/2004/07/VideoOS.Platform.Proxy.Alarm "http://schemas.datacontract.org/2004/07/VideoOS.Platform.Proxy.Alarm") _cannot have child contents to be deserialized as an object. Please use XmlNode\[\] to deserialize this pattern of XML.'. Please see InnerException for more details.</faultstring>_

</s:Fault>

</s:Body>

</s:Envelope>

Is there any problem with the SOAP request body?

This AlarmList sample might be helpful for you –

https://doc.developer.milestonesys.com/html/index.html?base=samples/protocolsamples/alarmlist/readme.html&tree=tree_3.html

Thanks. I want to use SOAP protocol to integrate with VMS. I guess maybe there is some wrong value put in the SOAP request body.

The following works for me. I just took out everything but the token and the token, max count, and empty filter. I am now trying to figure out how filters can be used. The see the C# project answer Milestone keeps giving is insufficient in my opinion. They really need to try their protocol integrations themselves. If they did, their documentation would improve.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cen="http://videoos.net/2/CentralServerAlarmCommand" xmlns:vid="http://schemas.datacontract.org/2004/07/VideoOS.Platform.Proxy.Alarm">
   <soapenv:Header/>
   <soapenv:Body>
      <cen:GetAlarmLines>
         <!--Optional:-->
         <cen:token>paste Token value here</cen:token>
         <!--Optional:-->
         <cen:maxCount>10</cen:maxCount>
         <!--Optional:-->
         <cen:filter>
         </cen:filter>
      </cen:GetAlarmLines>
   </soapenv:Body>
</soapenv:Envelope>