Problema con la registrazione dal dispositivo Open ONVIF (Network Video Interface Forum)


90

Sto lavorando al progetto Open Network Video Interface Forum-Java e sto seguendo i passaggi descritti nella Guida del programmatore dell'applicazione ONVIF .

Ho generato sorgenti dal wsdlssito ONVIF fornito. Sono in grado di recuperare l'URI del live streaming utilizzando media.wsdl. Ora ho un problema con la registrazione. I codici che ho provato sono riportati di seguito:

RecordingService recording_ervice = new RecordingService();
RecordingPort record_port = recording_ervice.getRecordingPort();


BindingProvider bindingProvider = (BindingProvider) record_port;

// Add a security handler for the credentials
final Binding binding = bindingProvider.getBinding();
List<Handler> handlerList = binding.getHandlerChain();
if (handlerList == null) {
    handlerList = new ArrayList<Handler>();
}

handlerList.add(new RecordStream.SecurityHandler());
// binding.setHandlerChain(handlerList);

// Set the actual web services address instead of the mock service
Map<String, Object> requestContext = bindingProvider.getRequestContext();

requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://" + deviceip + "/onvif/media_service");
requestContext.put(BindingProvider.USERNAME_PROPERTY, user);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, pass);

Recordings recordings = record_port.getRecordings();

Il codice sopra in esecuzione restituisce un errore come:

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized

Ho provato anche con il servizio multimediale, quindi l'errore è:

Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 405: Method Not Allowed

5
si noti che "registrazione" è il servizio utilizzato dai registratori ONVIF: la maggior parte delle telecamere IP non lo supporta. Penso che dovresti verificarlo nelle funzionalità del dispositivo, poiché è un servizio opzionale (dipende dal profilo supportato): onvif.org/ver10/device/wsdl/GetCapabilities . Un'altra nota: nell'ultima riga stai assegnando getRecordings () a "capacità" ... guardando onvif.org/onvif/ver10/recording.wsdl - Direi che questo è il tipo di output per GetServiceCapabilities (). Basta ricontrollare anche questo.
Sigismondo

1
le politiche di sicurezza del server web dovrebbero essere esaminate, poiché il metodo sembra essere presente nel codice ma non è consentito o raggiungibile dal client.
Ved

D'accordo con Ved ... Chiunque stia implementando questo WSDL o non ha implementato alcune funzionalità o lo spazio dei nomi punta a una dichiarazione WSDL che non include la funzione. Personalmente, sono un po 'sorpreso da questa scelta ONVIF di WSDL.

Risposte:


2

Quando hai provato con l'origine multimediale, hai richiesto un'azione non autorizzata apparentemente poiché il server ha restituito il codice di errore 405. O il metodo è vietato o hai bisogno di una credenziale per utilizzare il metodo.

Per quanto riguarda Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized, @Sigismondo ha ragione sul fatto che la maggior parte delle telecamere IP non lo supporta. Avrai bisogno di un metodo di registrazione alternativo (letterale e gioco di parole) per registrare da una telecamera IP.


1

Stai utilizzando http://" + deviceip + "/onvif/media_serviceper raggiungere il servizio di registrazione, ma questo è un servizio media.wsdl . Quindi, quando provi a chiamare getRecordings sul servizio multimediale, sembra normale che tu riceva un errore.

L'URL per il servizio recording.wsdl dovrebbe essere http://" + deviceip + "/onvif/recording_service.

Per ottenere l'URL corretto per raggiungere il servizio di registrazione, è necessario richiederlo dal metodo GetCapabilities del servizio devicemgmt.wsdl .


0

HTTP 405: la risorsa non consentita di solito si verifica in IIS. Questo problema si verifica se sono vere le seguenti condizioni:

  • Non si specifica il nome del file. Ad esempio, non si specifica http: // Server / Web / ...

  • Lo Scripting Object Model (SOM) è abilitato.

  • Viene chiamato un evento DTC.

Quindi, quando il SOM è abilitato un tag <form> viene inserito nella pagina il tag non è valido significa che non contiene alcuna azione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.