Just be aware to use everywhere the *http://IP/onvif/device_service*
url for reaching the services. According to GetServices request:
<env:Body>
<tds:GetServicesResponse>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver10/device/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/device_service</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver10/media/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/Media</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver10/events/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/Events</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver20/ptz/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/PTZ</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver20/imaging/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/Imaging</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver10/deviceIO/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/DeviceIO</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver20/analytics/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/Analytics</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
</tds:GetServicesResponse>
</env:Body>
You can have different services on different urls.
This has been seen on one of the HikVision cameras. Most of them uses the *http://IP/onvif/device_service*
.