...

View Full Version : Connect to AXIS camera through SOAP (ONVIF standart)



jmas
02-21-2012, 07:58 AM
Hi, guys!

I have a task:
I need to connect to the Axis Camera through SOAP. Camera support ONVIF 1.02 standart. I'm need to use PHP.

I think: I need to prepare right SOAP headers for accept authorization. After that I should call methods GetWsdlUrl or GetCapabilities.

Maybe anybody had same task?
We can talk about money.

Example of code that do not work:


try {
$HeaderSecurity = array(
"UsernameToken" => array(
"Username" => 'username',
"Password" => 'password',
'Nonce' => '',
'Created' => '',
),
);

$headers = array();
//$headers[] = new SoapHeader("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "Security", $HeaderSecurity, true);

$location = 'http://<IP_ADDRESS>:<PORT>/onvif/services';

$client = new SoapClient(null, array(
'location' => $location,
'uri' => $location,
'soap_version' => SOAP_1_2,
//'style' => SOAP_DOCUMENT,
//'use' => SOAP_ENCODED,
'encoding' => 'UTF-8',
'trace' => 1,
));

$client->__setSoapHeaders($headers);

$result = $client->__soapCall(
'GetWsdlUrl',
array()
);

var_dump($result);
} catch (Exception $e) {
echo '<pre>';
var_dump($e);
var_dump($client->__getLastRequestHeaders());
var_dump($client->__getLastRequest());
var_dump($client->__getLastResponse());
}

Example of right XML request:

<?xml version="1.0" ?>
<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Header>
<a:Action s:mustUnderstand="1">
http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest
</a:Action>
<a:MessageID>
urn:uuid:4f39e045-dd8f-4174-bd19-062b31e98cc5
</a:MessageID>
<a:ReplyTo>
<a:Address>
http://www.w3.org/2005/08/addressing/anonymous
</a:Address>
</a:ReplyTo>
<Security s:mustUnderstand="1" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<UsernameToken>
<Username>
user
</Username>
<Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">
zAD2ZmZBLi5Dt6cgEgZphHT2kzg=
</Password>
<Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">
leJ8YlvIbk+WSiGSZhE8twcAAAAAAAAAwY7fOQQAAAA=
</Nonce>
<Created xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
2012-02-14T13:14:41.960Z
</Created>
</UsernameToken>
</Security>
<a:To s:mustUnderstand="1">
http://46.175.145.129/onvif/services
</a:To>
</s:Header>
<s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Subscribe xmlns="http://docs.oasis-open.org/wsn/b-2">
<ConsumerReference>
<a:Address>
http://192.168.10.50:8445/subscription-1
</a:Address>
</ConsumerReference>
<InitialTerminationTime>
PT60S
</InitialTerminationTime>
</Subscribe>
</s:Body>
</s:Envelope>

And our XML:

<?xml version="1.0" ?>
<env:Envelope xmlns:enc="http://www.w3.org/2003/05/soap-encoding" xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://46.175.145.129:8444/onvif/services" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<env:Header/>
<env:Body>
<ns1:GetWsdlUrl env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
</env:Body>
</env:Envelope>

Links:
Onvif Specification v. 1.02 http://www.videosec.com/IP-1080p/ONVIF-Ver1.02-3.pdf
Onvif http://onvif.org/

Best regards.

jmas
02-22-2012, 02:57 PM
Task were done. Topic can be closed.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum